0

它在这个函数中做了什么,一般是什么意思?

def createOrder(request, pk):
        OrderFormSet = inlineformset_factory(Customer, Order, fields = ('product','status'), extra=10)
        customer=Customer.objects.get(id=pk)
        formset=OrderFormSet(queryset=Order.objects.none(),instance=customer)
        
        if request.method=='POST':
            
            formset=OrderFormSet(request.POST,instance=customer)
            if formset.is_valid():
                formset.save()
                return redirect('/')
        context={'formset':formset}
        return render(request, 'accounts/order_form2.html',context)
4

1 回答 1

1

inlineformset_factory为属于某个其他模型对象的模型对象创建表单集。第一个参数是parent_model“父”模型的类(其他模型必须属于的类)。第二个参数是model- 将为其创建表单的模型类。

inlineformset_factory(Customer, Order,...您一起创建一个表单集,该表单集可以为Order属于某个特定的 s创建表单Customer

您可以指定Customer所有Orders 必须属于哪个特定的方法是将instance参数传递给表单集。文档中的内联表单集下给出了一个示例。

queryset参数允许您限制为模型中的哪些对象创建表单。Order在您的情况下,应该显示哪个sa 表单。在文档中更改查询集下给出了一个示例。默认queryset设置为模型中的所有对象,例如Order.objects.all().

Order.objects.none()选择一个空的查询集。设置queryset为空查询集意味着不会为现有Order的 s 显示任何表单。只会显示一个新的表格Order

OrderFormSet(queryset=Order.objects.none(),instance=customer)就像你上面所说的,你基本上是在说:为一个应该链接到的新对象创建一个Order表单customer

于 2020-09-28T19:36:41.093 回答