如何保证两个相关模型得到保存?

时间:2010-07-09 11:02:20

标签: python django django-models

如果相关对象都填充了数据,我如何保证只保存数据?

class A(models.Model):
    title = models.CharField(max_length=255)
    slug = models.SlugField()

class B(A):
    author = models.CharField(max_length=255)
    url = models.URLField()

我通过访问模型B来插入数据:

b = B()
b.title = 'title'
b.slug = 'slug'
b.author = 'author'
b.url = 'www.google.com'
b.save()

如果模型B中发生错误,则模型A仍会保存。 当模型B没有保存时​​,如何防止模型A保存?

3 个答案:

答案 0 :(得分:3)

根据您的环境,transactions可能就是答案

答案 1 :(得分:2)

数据库交易?

答案 2 :(得分:0)

覆盖B的保存方法(as described in the docs),让它调用A的full_clean方法。如果它引发异常,就不要保存模型。