Выберите подмножество элементов внешнего ключа в inlineformset_factory в Django - PullRequest
3 голосов
/ 21 декабря 2010

У меня есть модель с двумя внешними ключами:

class Model1(models.Model):
  model_a = models.ForeignKey(ModelA)
  model_b = models.ForeignKey(ModelB)
  value = models.IntegerField()

Затем я создаю класс встроенного набора форм, например:

an_inline_formset = inlineformset_factory(ModelA, Model1, fk_name="model_a")

, а затем создаю его экземпляр следующим образом:

a_formset = an_inline_formset(request.POST, instance=model_A_object)

Как только этот набор форм отображается в шаблоне / странице, с полем model_b связывается ChoiceField.Проблема, с которой я столкнулся, заключается в том, что элементы в раскрывающемся меню включают все элементы, найденные в таблице ModelB.Мне нужно выбрать подмножество из тех, которые основаны на некоторых критериях из ModelB.В то же время мне нужно сохранять ссылку на экземпляр model_A_object при создании экземпляра inlineformset_factory и, следовательно, я не могу просто использовать этот пример.Есть предложения?

1 Ответ

2 голосов
/ 21 декабря 2010

Что вам нужно сделать, это изменить набор запросов ModelChoiceField

Самым простым способом сделать это может быть обезьяна-исправление формы formset. Вы должны быть в состоянии сделать это сразу после создания набора форм:

an_inline_formset.form.base_fields['model_b'].queryset = ModelB.objects.filter(whatever=True)

Не самая красивая, но она должна работать.

...