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