как установить значение по умолчанию для сгруппированных вариантов в django

Если у меня есть несколько сгруппированных вариантов для models.IntegerField, как я могу установить значение по умолчанию для комбинации этих вариантов?

ex:

class ForumThread():
    STATE_CHOICES = (
        ('Sticky', (
            (True,  'True'),
            (False, 'False')    )     ),
        ('Blocked', (
            (False, 'False')
            (True,  'True')     )     ),
    )

    name = models.CharField(max_length= 256)
    description = models.CharField(max_length= 256)
    state = models.IntegerField(choices= STATE_CHOICES)

для этого класса я хочу установить по умолчанию для поля «состояние» значение «Заблокировано» -> «Ложь» и «Прилеплено» -> «Ложь».

Спасибо


person lj8888    schedule 18.10.2010    source источник


Ответы (2)


Вы неправильно поняли, что делают сгруппированные варианты. Они предназначены только для представления - ваш IntegerField может представлять только одно значение, которое в вашем случае будет либо 0, либо 1 (для False или True). Единственное, что делают группы, это предоставляют заголовки в поле выбора. В настройках нет возможности иметь отдельные значения для Sticky и Blocked.

person Daniel Roseman    schedule 18.10.2010

Вам нужны два целочисленных поля — одно для Sticky и одно для Blocked.

Затем вы можете установить значения по умолчанию обычным способом в самом поле.

Если вы хотите, чтобы поля были взаимоисключающими, вы можете сделать это несколькими способами: изменение метода сохранения — это хороший баланс простоты и простоты.

http://docs.djangoproject.com/en/dev/ref/models/instances/#saving-objects

person jMyles    schedule 19.10.2010