从django formset获取新添加的表单

时间:2017-09-14 18:23:44

标签: python django django-forms formset formsets

我的表格如下:

TableAddFormSet = modelformset_factory(Table, form=TableAddForm)

该模型如下所示:

class Table(models.Model):

    restaurant = models.ForeignKey(Restaurant, on_delete=models.CASCADE)
    amount_of_people = models.IntegerField()
    category = models.CharField(max_length=10)
    reserved = models.BooleanField(default=False)

现在模型需要属性'restaurant',我将在表单提交时设置。到目前为止,我已经完成了以下工作:

for form in formset:
    form.instance.restaurant = request.user.restaurant

这意味着即使已存在的表单也会循环并更新。是否有更有效的方法将此属性添加到新添加的表单,如:

for form in formset.new_forms():

或者我的实现是解决此问题的最合适方式吗?

1 个答案:

答案 0 :(得分:0)

你应该可以像这样使用inlineformset_factory

TableAddFormSet = inlineformset_factory(Restaurant, Table, form=TableAddForm)
table_formset = TableAddFormSet(request.POST or None, instance=request.user.restaurant)

顾名思义,它更适用于您创建其中包含formset的表单(因此," restaurant"表单具有多个" table&#34 ;其中的条目),但它应该适用于你正在做的事情。