1
我想呈現一個inlineformset,但「額外」屬性似乎被忽略。請考慮以下型號:django inlineformset_factory被忽略的額外屬性?
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。
謝謝你的回覆。對於ForeignKeys我很困惑。假設我想表示比薩可以有很多配料;是不是「披薩」類的「頂部」領域,這是「頂部」類的外鍵?假設我想添加多個澆頭,我不能使用「Topping_formset = inlineformset_factory(Pizza,Topping)」的inlineformsetset嗎?你似乎是在暗示相反的意思。 – trubliphone 2012-01-13 19:40:57