【问题标题】:Django1.10: how to create 2 objects with foreign key relationship in one transactionDjango1.10:如何在一个事务中创建2个具有外键关系的对象
【发布时间】:2018-02-02 00:01:35
【问题描述】:

我有 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() 禁止以防止由于未保存的相关对象“管理员”而导致数据丢失。 如何修复此错误?如何在 1 个事务中创建这 2 个对象?

【问题讨论】:

  • 该代码不应该给出错误,因为您在vendor = Vendor(admin=user) 之前调用了user.save()。请显示实际代码和完整的回溯。
  • 是的@Alasdair 是对的。你使用了那笔交易吗?

标签: django


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多