模型:
class Book(models.Model):
name = models.Char()
class BookCount(models.Model):
book = OneToOneField(Book)
count = SmallIntegerField(default=0)
的观点:
class BookCreate(CreateView):
model = Application
问题是,在创建Book之后,我想在BookCount中插入一条记录。有什么想法吗?
答案 0 :(得分:2)
如果您的BookCount
模型是必需的,您可以使用post_save
信号的监听器:
# models.py
from django.db.models.signals import post_save
# Model definitions
...
def create_book_count(sender, instance, created, **kwargs):
if created:
BookCount.objects.create(book=instance)
post_save.connect(create_book_count, sender=Book)
如果您的模型非常简单,您可能需要删除BookCount
模型并在count
模型中添加Book
字段,以降低此处的复杂性和开销。请参阅extending the user model上的文档,以简要概述为什么最好避免使用OneToOneField
选项(措辞特定于User
模型,但它也适用于此处):
请注意,使用相关模型会导致其他查询或联接以检索相关数据,并且根据您的需要替换User模型并添加相关字段可能是您更好的选择。但是,项目应用程序中现有的默认用户模型链接可能会证明额外的数据库负载。