好吧,这个问题我敢肯定令人困惑。想象一下,我们有这样的模型:
class Phone(models.Model):
serial = models.CharField(max_length=13, unique=True)
model = models.CharField(max_length=4, choices=MODELOS)
class Contract(models.Model):
number = models.IntegerField()
phone = models.OneToOneField(Phone)
notes = models.TextField(blank=True, null=True)
sign = models.BooleanField(default=False)
我需要制作一个可以为这些模型中的所有字段输入的表单。在一页中,我需要指定手机的序列号和型号以及合同的编号、注释和签名。电话字段应该是在同一时刻创建的字段。我将如何做到这一点?
谢谢!
正如 ilvar 建议的那样,定义两个模型形式
class PhoneForm(forms.ModelForm):
class Meta:
model = Phone
class ContractForm(forms.ModelForm):
class Meta:
model = Contract
exclude = ('phone',)
def add(request):
...
if request.method == 'POST':
phone_form = PhoneForm(request.POST)
contract_form = ContractForm(request.POST)
if phone_form.is_valid() and contract_form.is_valid():
phone = phone_form.save()
contract = contract_form.save(commit=False)
contract.phone = phone
contract.save()
...
另外,只是好奇为什么你使用 OneToOneField
而不是 ForeignKey
或 ManyToManyField
,无论如何。