0

我有一个表单集如下:

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():

还是我的实现是解决这个问题的最合适的方法?

4

1 回答 1

0

你应该可以这样使用inlineformset_factory

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

顾名思义,它更适用于创建其中包含表单集的表单(因此,其中包含多个“表格”条目的“餐厅”表单),但它应该适用于您正在做的事情也。

于 2018-04-20T17:32:31.590 回答