我有两个模型,其中一个有一个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
我已经查找了事务保存点,但我不理解它们。 我的主要目标是保存或不保存任何内容
任何想法?
答案 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)