我有一个Book
模型,通过表ManyToManyField
将作者存储为Person
到Author
。存在中间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;两个步骤之间缺乏完整性。)
我想应该在提交时检查完整性。这样做是否有任何标准或推荐的做法?