Фильтр объектов в наборе форм Django - PullRequest
4 голосов
/ 26 августа 2011

Я использую inlineformset_factory для создания набора форм следующим образом:

FormSet = inlineformset_factory(Model1, Model2, extra=0)
if request.method =="POST":
    formset = FormSet(request.POST, instance=model1_object)
    if formset.is_valid():
        formset.save()
        return HttpResponseRedirect( reverse-blah )
else:
    formset = PupsFormSet(instance=model1_object,)
return render_to_response("template.html", {"formset":formset, 'model1_object':model1_object},context_instance=RequestContext(request)) 

У меня есть два вопроса

  1. Как я могу ограничить объекты Model2, чтобы не все применимые объекты былиприсутствует, но только отфильтрованное подмножество?
  2. У кого-нибудь есть пример кода для использования представлений на основе классов с наборами форм?

Обновлен функциональный код, отвечающий на вопрос # 1

FormSet = inlineformset_factory(Model1, Model2, extra=0)
if request.method =="POST":
    formset = FormSet(request.POST, instance=model1_object, queryset=Model2.objects.filter(foo=bar))
    if formset.is_valid():
        formset.save()
        return HttpResponseRedirect( reverse-blah )
else:
    formset = PupsFormSet(instance=model1_object, queryset=Model2.objects.filter(foo=bar))
return render_to_response("template.html", {"formset":formset, 'model1_object':model1_object},context_instance=RequestContext(request))

1 Ответ

7 голосов
/ 27 августа 2011

это поможет?https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#changing-the-queryset

в основном, попробуйте использовать набор запросов kwarg при создании набора форм.

...