以下是我在Django中的模型。
class Authors(models.Model):
first_name = models.CharField(max_length=200)
last_name = models.CharField(max_length=200)
total_books = models.IntegerField(default =0)
class Book(models.Model):
title = models.CharField(max_length=200)
topic = models.CharField(max_length=200)
author = models.ForeignKey(Authors, on_delete = models.CASCADE)`
字符串
我想用Admin平台实现:当我添加一本新书时,相关作者中的total_books将增加1。有什么办法解决吗?
如果有人帮我,我会把它拿走的。
有人能给予我一些想法吗?
3条答案
按热度按时间blmhpbnm1#
您应该添加一个方法来执行此操作。您的方法导致向数据库写入的数据比需要的多。你甚至可以选择一个属性:
字符串
带有
<object>_set
的语法是django中反向查找的默认实现。搜索'_set' here以查找更多示例。然后,当你“抓取”一个作者时,你可以很容易地得到book_count,如下所示:
型
knsnq2tg2#
Tarquinius的答案:
如果要在管理面板中显示book_count属性,则应将list_display和readonly_fields添加到ModelAdmin:
字符串
juzqafwq3#
您可以在Authors中包含方法来更新计数。
字符串
并在创建图书后使用signals调用此方法。将Author的示例传递给它。