Альтернативы ManytoManyField для статических / жестко закодированных данных? - PullRequest
0 голосов
/ 17 декабря 2011

Я создаю приложение Django, в котором мне нужно представлять пол (мужской / женский) для всех пользователей.Один пользователь может выбрать, заинтересованы ли они в мужчинах, женщинах или в обоих.Затем эти данные будут использованы для перекрестных ссылок с другими пользователями, чтобы найти сходства.Очевидно, что поле ManytoManyField для пола будет работать, но так как пол является довольно статичным полем, в котором будет только два варианта, есть ли лучший способ реализовать это?Существует ли какое-либо поле с возможностью множественного выбора, которое не требует, чтобы база данных была подслушана из поля m2m?

Ответы [ 2 ]

2 голосов
/ 17 декабря 2011

Определенно уклоняться от M2M - это будет дорого и просто трудно со временем запросить с тоннами двойного подчеркивания.Что касается статических вещей, вам определенно нужно choices.

Одна из наиболее полезных практик кодирования, которую я выучил за эти годы, - идея из блога Джеймса Беннетса о том, как он использует выбор: http://www.b -list.org / weblog / 2007 / nov / 02 / handle-choices-right-way /

По сути, позвольте вам сделать это:

class MyObject(models.Model):
    MALE = 0
    FEMALE = 1
    ROBOT = 2
    MY_CHOICES = [
        (MALE, 'Male'),
        (FEMALE, 'Female'),
        (ROBOT, 'Robot'),
    ]
    gender = models.IntegerField(choices=MY_CHOICES)


MyObject.objects.filter(gender=MyObject.ROBOT)
0 голосов
/ 17 декабря 2011

Вы можете сохранить строку или целое число и ограничить возможные значения, используя choices

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...