我有以下型号
class Make(models.Model):
make_name = models.CharField(max_length=32)
def __unicode__(self):
return self.book_title
class MakeModel(models.Model):
model_number = models.IntegerField()
model_capacity = models.IntegerField()
model_capacity_unit = models.CharField(max_length=4)
Make = models.ForeignKey(Make)
def __unicode__(self):
return self.model_number
基本上,我希望我的表单在顶部包含所有Make详细信息,并在下面的网格中包含所有MakeModel详细信息,并且能够轻松添加更多MakeModel。比如在这个模型中
https://www.dropbox.com/s/e7rg3zxe6y8q9fi/invoicedetails.gif
任何想法需要做什么?人们提到像inlineformset_factory这样的东西,但是我不相信如何使用它,或者它是否会做我期望的事情。
任何帮助将不胜感激
答案 0 :(得分:2)
您需要一个表单和一个formset。
您的视图在POST周期中看起来像这样:
更新:哦,对,外键。诚实的最简单方法就是将form = False设置为False并手动分配FK。您也可以使用inlineformset。 https://docs.djangoproject.com/en/dev/ref/forms/models/#django.forms.models.inlineformset_factory
FormSet = modelformset_factory(MakeModel)
Form = modelform_factory(Make)
def myview(request):
formset = FormSet(request.POST or None)
form = Form(request.POST or None)
if request.method == 'POST':
if formset.is_valid() and form.is_valid():
main_instance = form.save()
formset.save(commit=False)
for instance in formset:
instance.fk = main_instance
instance.save()
https://docs.djangoproject.com/en/dev/topics/forms/formsets/