Форум сайта python.su
0
Имеется некоторая модель, и форма (ModelForm) которая эту модель отображает.
В модель мне нужно добавить поле, для которого возможен выбор любой комбинации из 3-х вариантов (на форме 3 чекбокса соответственно).
По началу сделал IntegerField длиной в 3 разряда. И соответственно первый вариант - 1, второй - 10, третий - 100. При обработке это все складывалось и результат писался в БД. Но что-то как-то этот вариант мне не нравится.
Подскажите, что почитать, где подсмотреть что-то подобное? Как лучше реализовать такое в модели?
Офлайн
0
Почему не сделать три отдельных булевых поля?
Вообще для работы с битовыми полями использовал https://github.com/godshall/django-bitfield - в принципе нормально, только не помню работает ли он с modelForm.
Отредактировано (Июль 26, 2011 23:39:22)
Офлайн
0
pillВозможно, придется сделать так, если по-другому не выйдет. Но по логике приложения все три поля должны быть в одной группе.
Почему не сделать три отдельных булевых поля?
pillЗа ссылку спасибо - попробую.
Вообще для работы с битовыми полями использовал https://github.com/godshall/django-bitfield - в принципе нормально, только не помню работает ли он с modelForm.
Офлайн
0
Уведомлять: На руки, По почте, По email.угу. а скажите, вам, наверное захочется получить всех юзеров, которые выбрали “по мылу” или “по мылу и по почте”…
Офлайн
0
razum2umЯ задумывался над m2m, но это нерационально. Вариантов всегда будет только 3. Зато в базе будет 2 лишних таблицы, одна из которых еще и расти будет.
угу. а скажите, вам, наверное захочется получить всех юзеров, которые выбрали “по мылу” или “по мылу и по почте”…
а захочется вариант добавить?
не напоминает many2many?
Офлайн
0
Я конечно скажу глупость, но почему не сделать
STATUS_CHOICES = (
(1, u'на руки'),
(2, u'по почте'),
(3, u'по мылу'),
)
status = models.IntegerField(choices=STATUS_CHOICES, default=3)
Офлайн
0
dissdocПотому, что должна быть возможность выбрать в том числе несколько разных вариантов одновременно.
Я конечно скажу глупость, но почему не сделатьSTATUS_CHOICES = (
(1, u'на руки'),
(2, u'по почте'),
(3, u'по мылу'),
)
status = models.IntegerField(choices=STATUS_CHOICES, default=3)
Отредактировано (Авг. 1, 2011 19:41:18)
Офлайн