Как сделать uniques в Django Models? И также индексируйте столбец в Django

Я решил, что мне нравятся варианты использования стиля Cockburn, как описано Fowler в его книге, озаглавленной "Дистиллированный UML". Мне нравятся они достаточно, что я создал экспериментальный способ встроить их непосредственно в пространства имен C#.

Путем выполнения этого я мог закодировать бизнес или логику UI с точки зрения английского содержания языка вариантов использования бесплатно, не имея необходимость писать любой вид предметно-ориентированного языка. Самое непосредственное преимущество было то, что я улучшил удобочитаемость кода (альбит в очень новом и тайном способе). Это - все еще экспериментальный подход. Однако я полагаю, что это могло быть полезно.

Здесь ссылка на вопрос, который я отправил при попытке найти другие способы сделать то, что я сделал.

9
задан TIMEX 25 November 2009 в 00:40
поделиться

3 ответа

По поводу вашего первого вопроса: Вам следует посмотреть на unique_topting , так как это может решить вашу проблему.

class Rating(models.Model):
    content = models.OneToOneField(Content, primary_key=True)
    ip =  models.CharField(max_length=200, blank=True)
    rating = models.IntegerField(default=0)

    class Meta:
        unique_together= (('content', 'ip'),)
14
ответ дан 4 December 2019 в 08:15
поделиться

Об индексах: вам не нужно ничего делать для содержимого , поскольку это первичный ключ, он будет проиндексирован. Для ip просто добавьте db_index = True к вызову конструктора CharField :

ip = models.CharField(max_length=200, blank=True, db_index=True)

Подробнее о db_index и других параметрах поля здесь

5
ответ дан 4 December 2019 в 08:15
поделиться

Кстати, если, как следует из вашей терминологии, вы используете IP-адреса для обозначения личности пользователей, пожалуйста, не - это очень ужасная идея. Пользователи, входящие через своего интернет-провайдера, будут менять свои IP-адреса в случайное время, поэтому они могут проголосовать дважды; пользователи портативных компьютеров, подключающиеся к различным кафе, библиотекам и т. д., всегда будут иметь разные IP-адреса; пользователи, совместно использующие соединение (например, соседи по квартире), или даже каждый из пользователей, приходящих из университетского городка, могут получить один и тот же IP-адрес через NAT, поэтому только один сможет проголосовать ... трудно представить -)

Если ваше использование имени ip в поле «идентификатор пользователя» случайно и не имеет ничего общего с использованием там IP-адресов, я прошу прощения ,

7
ответ дан 4 December 2019 в 08:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: