Определенно уклоняться от 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)