Как гарантировать сохранение двух связанных моделей? - PullRequest
1 голос
/ 09 июля 2010

Как я могу гарантировать, что данные будут сохранены, только когда связанные объекты заполнены данными?

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 все еще сохраняется.Как я могу предотвратить сохранение модели A, если модель B не сохраняется?

Ответы [ 3 ]

3 голосов
/ 09 июля 2010

В зависимости от вашей среды, транзакции , вероятно, ответ

2 голосов
/ 09 июля 2010

База данных транзакций?

0 голосов
/ 09 июля 2010

Переопределите метод сохранения B (, как описано в документации ), пусть он вызывает метод A full_clean .если возникает исключение, просто не сохраняйте модель.

...