【问题标题】:Filter Objects in a Django Formset在 Django 表单集中过滤对象
【发布时间】:2011-11-04 16:14:45
【问题描述】:

我正在使用 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))

【问题讨论】:

    标签: django django-forms formset django-class-based-views


    【解决方案1】:

    这会有帮助吗? https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#changing-the-queryset

    基本上,在创建表单集时尝试使用 queryset kwarg。

    【讨论】:

    • 效果很好...... queryset 参数必须进入 formset = Formset() 调用而不是 inlineformset_factory 调用,所以我已经用那个答案更新了我的问题
    猜你喜欢
    • 2011-01-07
    • 2014-02-10
    • 2011-01-10
    • 1970-01-01
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 2014-01-08
    相关资源
    最近更新 更多