我正在创建一个表单,其中有人输入网络的network
,location
和administrators
。这是我的模特 -
class Administrator(models.Model):
email = models.EmailField()
name = models.CharField(max_length=100, blank=True)
class Network(models.Model):
name = models.CharField(max_length=50)
location = models.CharField(max_length=50)
administrators = models.ManyToManyField(Administrator, blank=True)
如何创建表单,以便当网站管理员将管理员添加到网络时,它会立即在Administrator
类中创建该条目,然后链接到administrators
列中的条目?
答案 0 :(得分:1)
要自定义处理表单对象,请使用form.save(commit=False)
:
此save()方法接受可选项 commit keyword参数,接受 无论是真还是假。如果你打电话 save()with commit = False,然后它会 返回一个尚未存在的对象 保存到数据库中。在这种情况下, 你可以在上面调用save() 结果模型实例。这是 如果你想做自定义,很有用 保存前对对象进行处理 它,或者如果你想使用其中一个 专业的模型保存选项。
来自:https://docs.djangoproject.com/en/1.0/topics/forms/modelforms/#the-save-method
因此,如果您有NetworkForm
,则可以使用commit=False
,然后检查您的管理员是否已存在或是否需要创建。 get_or_create
对此非常方便。
然后,您可以将表单上的administrator
设置为新创建或获取的管理员实例,并保存表单(使用form.save()
和form.save_m2m()
)。