当前位置: 首页 > 知识库问答 >
问题:

Django ForeignKey数据分组

潘修文
2023-03-14

Django ForeignKey需要分组

from django.db import models

class Reporter(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)
    email = models.EmailField()

    def __str__(self):
        return "%s %s" % (self.first_name, self.last_name)

class Article(models.Model):
    headline = models.CharField(max_length=100)
    pub_date = models.DateField()
    reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)

    def __str__(self):
        return self.headline

    class Meta:
        ordering = ('headline',)

我想列出所有的记者和他们的所有文章显示以下格式。怎么可能呢?

-------------------------------
Reporter Name |  Total Article
-------------------------------
Reporter 1    |   3
-------------------------------
Reporter 2    |   4
-------------------------------

共有1个答案

商天逸
2023-03-14

如果要列出所有报告者,您可以使用Reporter.objects.all()它将返回所有报告者的查询集,并且要获取其中的文章,请使用反向关系,即-Reporter\u object.article\u set,因为您没有定义任何相关名称。看到这个了吗

我可以给你一个简单的例子,如何打印所有记者的文章-

for reporter in Reporter.objects.all():
    print(reporter)
    for article in reporter.article_set.all():
        print(article)

当你定义一个ForeignKey关系,一个一对多的关系是在记者和文章之间创建的,另外一个属性添加在记者,默认情况下,它是您的模型的名称与后缀_set即article_set但当您指定related_name然后,这将是相同的related_name,现在你可以很容易地调用文章的相关名称与对象的记者。

还是有什么疑问评论吧。

 类似资料:
  • 用GROUP BY 跟 HAVING子句,分组数据来汇总表内容子集。 创建分组 分组在SELECT语句的GROUP BY子句中建立。 mysql> SELECT vend_id, COUNT(*) AS num_prods -> FROM Products -> GROUP BY vend_id; +---------+-----------+ | vend_id | num_pr

  • 主要内容:聚合查询,Access中的连接,示例在本章中,我们将介绍Access中如何计算如何分组记录。 我们创建了一个按行计算或按记录计算的字段来创建行总计或小计字段,但是如果想通过分组记录而不是单个记录来计算,那该怎么办呢? 可以通过创建聚合查询来实现这一点。 聚合查询 聚合查询也称为总计或汇总查询是总和,质量或组的详细信息。它可以是总金额或总金额或记录的组或子集。 聚合查询可以执行许多操作。下面是一个简单的表格,列出了分组记录中总的方法。

  • Redisson 仅在集群模式中支持数据分区(分片)。 它使得可以使用整个 Redis 集群的内存而不是单个节点的内存来存储单个数据结构实例。 Redisson 默认将数据结构切分为 231 个槽。槽的数量可在 3 和 16834 之间。槽会一致地分布在所有的集群节点上。这意味着每个节点将包含近似相等数量的槽。如默认槽量(231) 和 4 个节点的情况,每个节点将包含接近 57 个数据分区,而对

  • $Wxch_indent = M("Wxch_indent"); // 实例化Wxch_indent对象 $count = $Wxch_indent->where($where)->count();// 查询满足要求的总记录数 $Page = $this->Page($count,25);// 实例化分页类 传入总记录数和每页显示的记录数(25) $show = $Page->sho

  • ShardingAlgorithm SPI 名称 详细说明 ShardingAlgorithm 分片算法 已知实现类 详细说明 BoundaryBasedRangeShardingAlgorithm 基于分片边界的范围分片算法 VolumeBasedRangeShardingAlgorithm 基于分片容量的范围分片算法 ComplexInlineShardingAlgorithm 基于行表达式的

  • 配置项说明 命名空间:http://shardingsphere.apache.org/schema/shardingsphere/sharding/sharding-5.0.0.xsd <sharding:rule /> 名称 类型 说明 id 属性 Spring Bean Id table-rules (?) 标签 分片表规则配置 auto-table-rules (?) 标签 自动化分片表规

  • 配置项说明 spring.shardingsphere.datasource.names= # 省略数据源配置,请参考使用手册 # 标准分片表配置 spring.shardingsphere.rules.sharding.tables.<table-name>.actual-data-nodes= # 由数据源名 + 表名组成,以小数点分隔。多个表以逗号分隔,支持inline表达式。缺省表示使用

  • 配置项说明 dataSources: # 省略数据源配置,请参考使用手册 rules: - !SHARDING tables: # 数据分片规则配置 <logic-table-name> (+): # 逻辑表名称 actualDataNodes (?): # 由数据源名 + 表名组成(参考Inline语法规则) databaseStrategy (?): #