使用Django中的OneToOneField保存两个表单数据

我有两个型号

class Client(models.Model) :
    
    Code_Client=models.CharField(max_length=200)
    ......

class Adr(models.Model) : 
    client = models.OneToOneField(Client,on_delete=models.CASCADE)

我创建了两个表单:一个用于客户端,另一个用于Adr,以便在一个模板中使用它我可以做到没有问题但是当我尝试从两个表单中保存数据时它给了我一个错误

if form.is_valid() and form_Adr.is_valid():
            #pdb.set_trace()
            new_client=form.save()

            Adr0 = form_Adr.save(commit=False)
            Adr0.client= new_client
            Adr0.save()

错误是

客户:此字段是必填字段 .

回答(1)

2 years ago

您有Client和Adr之间的关系 . 类似于 Foreign key .

client = models.OneToOneField(Client,on_delete=models.CASCADE)

此声明要求对于Adr的每个实例仅存在一个客户端 . 客户字段的原因是强制性的 . 使用类似的东西

Adr0.client_set.all()

[<Adr0: client>]