Django1.10:如何在一个事务中创建具有外键关系的2个对象

时间:2018-02-02 00:01:35

标签: django

我有2个型号:

class Vendor(models.Model):
    admin = models.ForeignKey(User)
    ...
class User(models.Model):
    ...  

我想在一个交易中创建用户和供应商:

    with transaction.atomic():
        user = User(name="test")
        user.save()
        vendor = Vendor(admin=user)
        vendor.save()

但我收到错误: ValueError:禁止save()以防止由于未保存的相关对象' admin'而导致数据丢失。 如何解决这个错误?如何在1个事务中创建这两个对象?

1 个答案:

答案 0 :(得分:0)

我认为我发现了我的问题:模型User的主键未定义为AutoField,因此在保存后,User对象不是一个完整的对象:缺少主键。我认为这会导致错误。将主键设置为AutoField后,错误已解决。