Django - 使用未保存的外键在事务中保存模型

时间:2015-05-05 21:51:11

标签: python django

我有两个模型,其中一个有一个ForeignKey到另一个,想法是将它们保存在一个事务中,但它给了我一个错误。

这些是我的模特:

class Parent(models.Model):
    name = models.CharField(...)
    ...

class Child(models.Model):
    parent = models.ForeignKey(Parent)
    ...

这是我的观点

@transaction.atomic()
def save_parent(request):
    try:
        parent = Parent(name=request.POST.get('name'),other_fields).save()
        child = Child(parent=parent,other_fields).save()
        ...
    except:
        pass

我已经查找了事务保存点,但我不理解它们。 我的主要目标是保存或不保存任何内容

任何想法?

1 个答案:

答案 0 :(得分:2)

您没有正确保存对象。试试这个

parent = Parent(name=request.POST.get('name'),other_fields)
parent.save()
child = Child(parent=parent,other_fields)
child.save()

或者在管理器中使用create方法。

parent = Parent.objects.create(name=request.POST.get('name'),other_fields)
child = Child.objects.create(parent=parent,other_fields)