繁体   English   中英

如何构造一个 Django model 其字段依赖于另一个模型的字段

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM