Django 在窗体中使用窗体或如何在窗体中使用外键

Django 在窗体中使用窗体或如何在窗体中使用外键,django,django-forms,Django,Django Forms,我将以文档模型为例: class Car(models.Model): manufacturer = models.ForeignKey('Manufacturer') # ... class Manufacturer(models.Model): # ... 假设我想创建一个表单来添加一个新的制造商,在这个表单中我想能够添加新的汽车。如何使用django表单 有可能吗 提前感谢您的帮助 简短的回答是: 您需要modelformset\u工厂,这里有文档记录: 答案仍

我将以文档模型为例:

class Car(models.Model):
    manufacturer = models.ForeignKey('Manufacturer')
    # ...

class Manufacturer(models.Model):
    # ...
假设我想创建一个表单来添加一个新的制造商,在这个表单中我想能够添加新的汽车。如何使用django表单

有可能吗

提前感谢您的帮助

简短的回答是:

您需要
modelformset\u工厂
,这里有文档记录:

答案仍然很简短,但有几个问题需要注意:

在处理方面,如果同时创建制造商和多个汽车实例,则在保存单个汽车(必须引用制造商)之前,您需要确保首先保存制造商。如果可以,请确保在数据库事务中发生这种情况

还有一点需要注意的是:如果这让您有点困惑,请记住,没有硬性规定规定您只能处理一个请求中的一个表单。HTML
标记中有多个
forms.Form
(或其子类)对象,这些对象发布到单个请求位置,该位置单独处理每个表单并将其保存。同样,使用数据库事务,这样,如果最后出现故障,整个事务将回滚,用户可以更正错误,而不会在数据库中出现错误或孤立数据。

简短回答:

您需要
modelformset\u工厂
,这里有文档记录:

答案仍然很简短,但有几个问题需要注意:

在处理方面,如果同时创建制造商和多个汽车实例,则在保存单个汽车(必须引用制造商)之前,您需要确保首先保存制造商。如果可以,请确保在数据库事务中发生这种情况

还有一点需要注意的是:如果这让您有点困惑,请记住,没有硬性规定规定您只能处理一个请求中的一个表单。HTML
标记中有多个
forms.Form
(或其子类)对象,这些对象发布到单个请求位置,该位置单独处理每个表单并将其保存。同样,使用数据库事务,这样,如果最后出现故障,整个过程都会回滚,用户可以更正错误,而数据库中不会有坏数据或孤立数据