[英]How can I construct a Django model whose fields are dependent upon another model's fields
我目前正在制作一个简单的报纸 Django 应用程序,并且正在研究文章 model,如下所示:
class Article(models.Model):
title = models.CharField(max_length=255)
body = models.TextField()
#date = models.DateTimeField(auto_now_add=True)
author = models.ForeignKey(
get_user_model(),
on_delete=models.CASCADE,
)
topic = models.CharField(max_length=255)
score_choices = [(-5,'-5'), (-4, '-4'), (-3,'-3'), (-2, '-2'), (-1,'-1'),
(0,'0'),(1,'1'), (2,'2'), (3,'3'), (4,'4'), (5,'5')]
score = models.IntegerField(choices=score_choices, default=0)
我正在尝试创建另一个看起来像这样的 model:
class Topic(models.Model):
topic_name = models.CharField(max_length=255)
average_score =
在主题 model 中,我想做的是以某种方式查询所有以 topic_name 作为主题的文章,然后返回已为具有该主题的文章输入的分数列表。
我目前在这个问题上很迷茫,我什至不确定使用 Django 模型是否是最佳途径。 我已经阅读了一段时间的 Django 文档以及第三方书籍,但我在这里找不到任何参考资料。
总而言之,我有两个模型:文章和主题。 文章也有一个名为“主题”的字段,我想为我的主题 class 创建一个字段,该字段是所有文章对象的得分字段的 function,其“主题”字段与我的单独主题 ZA2F21A29BDC24 的字段一致。 如果这令人困惑并且我不知道所有的术语,因为我正在尝试自学,我深表歉意。
我已通读 Django 文档中有关模型、查询、多对多关系和各种其他属性的页面。 我仍然不确定解决方案。
像下面这样的东西会起作用,使用聚合:
from django.db.models.aggregates import Avg
class Topic(models.Model):
topic_name = models.CharField(max_length=255)
def average_score(self):
return Article.objects.filter(topic=self.topic_name).aggregate(avg=Avg('score')).get('avg')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.