class Author(models.Model):
...
class Book(models.Model):
author = models.ForeignKey(Author)
book_seq = models.PositiveIntegerField()
class Meta:
unique_together = ('author','book_seq')
def create_book_for_author(cls,author):
book_seq = Book.objects.filter(author=author).count() + 1
Book.objects.create(author=author,book_seq=book_seq)
有什么方法可以在数据库级别引用此book_seq = Book.objects.filter(author=author).count() + 1
,因为如果同时执行此行,则唯一约束将失败,而第二个通过插入查询到达数据库的约束将失败。我知道一种选择是交易,但是还有其他方法吗? F()
对象仅适用于具体字段,不适用于数据库查询。