【问题标题】:django inlineformset_factory extra attribute being ignored?django inlineformset_factory 额外属性被忽略?
【发布时间】:2012-01-13 18:46:24
【问题描述】:

我正在尝试渲染一个内联表单集,但“额外”属性似乎被忽略了。考虑以下模型:

 class Foo_model(models.Model):     
     fooName = models.CharField(max_length=LIL_STRING)
     bars    = models.ForeignKey("Bar_model")

 class Bar_model(models.Model):     
     barName = models.CharField(max_length=LIL_STRING)

表格:

 class Foo_form(ModelForm):    
     class Meta:
         model = Foo_model

 class Bar_form(ModelForm):    
     class Meta:
         model = Bar_model

 Bar_formset = inlineformset_factory(Foo_model,Bar_model,formset=Bar_form,extra=23)

查看:

 def ViewFoo(request, model_id=False):
     if model_id:                  
         model = Foo_model.objects.get(pk=model_id)
     else:
         model = Foo_model()

     form = Foo_form(instance=model)    
     formset = Bar_formset(instance=model)

     return render_to_response('form.html', {'form' : form, 'formset' : formset }, context_instance=RequestContext(request))

和模板:

 <html>
   <form method="POST" action="">
     {% csrf_token %}
     <div>
       {{ form }}
       {{ formset }}
     </div>
     <input class="button" type="submit" value="Submit"/>
   </form>
 </html>  

这仅显示 Bar_form 的一个实例,而它应该显示 23 ("extra=23")。任何想法我做错了什么?

谢谢


更新:

事实证明,部分问题在于我的所有模型类都继承自同一个基类。如果我让它们只从models.Model继承,那么问题就消失了(尽管其他问题出现在他们丑陋的头脑中)。我仍然希望它们从单个类继承,所以我原来的问题仍然存在。


更新更新:

使我的模型的基类抽象:

 class BaseClass(models.Model):
     class Meta:
         abstract = True

似乎可以解决问题。我现在可以在我的班级之间使用 ForeignKeys 和 ManyToManyFields。

【问题讨论】:

    标签: python django inline-formset


    【解决方案1】:

    由于Foo 模型中存在外键,您需要创建一个Foo FormSet(否则,从逻辑上讲,表单将包含什么是没有意义的)。

    【讨论】:

    • 感谢您的回复。我对 ForeignKeys 很困惑。假设我想表示披萨可以有很多配料;这不是“披萨”类上的“顶级”字段,它是“顶级”类的外键吗?而且,假设我想添加多个浇头,我不能使用“Topping_formset = inlineformset_factory(Pizza,Topping)”的内联表单集吗?你似乎提出了相反的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多