在提交表单时,我很难弄清楚如何为ForeignKey字段自动创建模型实例.这是一个简单的玩具网站,说明了这个问题:
我有两个型号,Model1和Model2.Model2包含一个到Model1的ForeignKey.我希望用户能够通过专门选择要存储在ForeignKey中的Model1实例,或者将该值留空并让自动生成Model1的实例来创建Model2的实例.
这就是我觉得代码看起来像的样子.我的models.py代码非常简单:
# models.py
from django.db import models
from django.core.validators import MinValueValidator
class Model1(models.Model):
# Note this field cannot be negative
my_field1 = models.IntegerField(validators=[MinValueValidator(0)])
class Model2(models.Model):
# blank = True will make key_to_model1 not required on the form,
# but since null = False, I will still require the ForeignKey
# to be set in the database.
related_model1 = models.ForeignKey(Model1, blank=True)
# Note this field cannot be negative
my_field2 = models.IntegerField(validators=[MinValueValidator(0)])
Run Code Online (Sandbox Code Playgroud)
forms.py有点牵扯,但是发生的事情非常简单.如果Model2Form没有收到Model1的实例,它会尝试在clean方法中自动创建一个,验证它,如果它有效,它会保存它.如果它无效,则会引发异常.
#forms.py
from django import forms
from django.forms.models …Run Code Online (Sandbox Code Playgroud)