检查ManyToManyField

时间:2015-11-03 13:26:22

标签: django django-models

我有一个Book模型,通过表ManyToManyField将作者存储为PersonAuthor。存在中间Author表,因为它添加了order属性:

from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.ManyToManyField(Person, through='Author')

class Author(models.Model):
    book = models.ForeignKey(Book)
    person = models.ForeignKey(Person)
    order = models.PositiveSmallIntegerField()

我想要的是验证,对于给定的书,order以1开头并且是连续的。我在哪里可以检查?我无法在Book.save()中执行此操作,因为首先您需要保存该书,然后将作者添加到其中(这就是ManyToManyField如何工作AFAIU)。我无法在Author.save()中执行此操作,因为暂时失去完整性是正常的(例如,如果有4位作者,我删除了订单= 3的作者,那么我更新了最后一位作者设置顺序= 3;两个步骤之间缺乏完整性。)

我想应该在提交时检查完整性。这样做是否有任何标准或推荐的做法?

0 个答案:

没有答案