Как я могу использовать несколько наборов запросов в ModelChoiceField? - PullRequest
1 голос
/ 18 ноября 2009

Я только начинаю изучать Django и хотел бы использовать другой набор запросов в ModelChoiceField.

У меня есть 3 такие модели:

class Politic(models.Model):
    name = models.CharField(max_length=100)

class Economic(models.Model):
    name = models.CharField(max_length=100)

class Category(models.Model):
    politic = models.ForeignKey(Politic, blank = True, null = True)
    economic = models.ForeignKey(Economic, blank = True, null = True)

И такая форма:

class MyForm(forms.Form):
    choice = forms.ChoiceField(choices = (("0", u"---------"), ("1", u"Politic"), 
                                          ("2",  u"Economic")),
                               required=False)

    category = forms.ModelChoiceField(queryset=Economic.objects.all(), 
                                      required=False)

В моем шаблоне я использую Ajax, чтобы заполнить поле моей категории списком всех значений Politic или Economic в соответствии с моим полем выбора.
Но если я выберу "Politic", у меня возникнет проблема при проверке формы, потому что набор запросов для моего поля категории - Economic.objects.all(), а не Politic.objects.all().
Как я могу изменить свой динамический набор запросов? Есть идеи?

Ответы [ 3 ]

2 голосов
/ 18 ноября 2009

Вы можете иметь 2 различных варианта выбора: один для политического и один для экономического, а также показать / скрыть их на основе поля выбора.

Или, может быть Абстрактное наследование модели решит вашу проблему

0 голосов
/ 19 ноября 2009

Спасибо за ваши ответы, я стараюсь использовать два ваших решения (Абстрактная модель и Родовое отношение), но это не решает мою проблему.
Поэтому я создаю две разные ModelChoiceField (одну для Политики и одну для Экономики) и использую эффекты скрытия / показа Jquery в своем шаблоне (как вы говорите Kugel).
Но если у вас есть другие идеи по моей проблеме, я заинтересован.

0 голосов
/ 18 ноября 2009

Одной из возможностей было бы использование родового отношения в вашей Catagory модели.

...