Форум сайта python.su
Привет, сложно сформулировать в заголовке…
Вот такой вопрос: думаю большинство знакомо с django tutorial. там есть две модели Poll и Choice:
class Poll(models.Model): question = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') class Choice(models.Model): poll = models.ForeignKey(Poll) choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0)
default_question = models.ForeignKey(Choice)
Офлайн
>>>Надеюсь понятно.
Неа, не оправдались надежды. Не понятно.
Вы вообще хотите странного, у Вас в Choice есть ссылка на Poll, теперь Вы хотите в Poll сделать ссылку на Choice. Так не делают.
Офлайн
FishHookТем не менее вы все верно поняли.Именно это мне и нужно сделать.Ну а то, что так не делают — это ж тестовое задание, я упомянул, что сам сделал бы по другому
>>>Надеюсь понятно.Неа, не оправдались надежды. Не понятно.Вы вообще хотите странного, у Вас в Choice есть ссылка на Poll, теперь Вы хотите в Poll сделать ссылку на Choice. Так не делают.
Офлайн
>>>Тем не менее вы все верно поняли.
Да почему же не добавить в Choice булево поле, указывающее на то, что это выбор по умолчанию и сделать unique_together на это поле и poll?
Но если уж настаиваете на кривом решении, то в том месте, где в poll записывается ID дефолтного Choise проверяйте его на валидность. “как то ограничить” средствами СУБД вряд ли получится, по крайней мере это сильно зависит от СУБД и Django тут вообще не при чем.
Офлайн
FishHookПотому что не я это придумал?
Да почему же не добавить в Choice булево поле, указывающее на то, что это выбор по умолчанию и сделать unique_together на это поле и poll?
FishHookЕще раз повторюсь, я бы сделал это по другому, я не настаиваю что это верное решение, более того, я согласен, что оно кривое. К сожалению ситуация не дает права выбора.
Но если уж настаиваете на кривом решении, то в том месте, где в poll записывается ID дефолтного Choise проверяйте его на валидность. “как то ограничить” средствами СУБД вряд ли получится, по крайней мере это сильно зависит от СУБД и Django тут вообще не при чем.
Офлайн
Зачем вам foreign key на модель choice? Сделайте как советовали выше, добавьте поле default в модель choice. Если нужно отображать в админке добавьте метод в модель poll default_choice. В форме для голосования передавайте в initial данное значение. Если все таки надо именно foreign key, добавьте в модель poll поле с параметрами null=true, blank=true и заполняйте его после создания голосования и вариантов.
Офлайн