当前位置: 首页 > 面试题库 >

Django使用不同的字段注释计数

赵英哲
2023-03-14
问题内容

我有两个松散定义的模型,如下所示:

class InformationUnit(models.Model):
    username = models.CharField(max_length=255)
    project = models.ForeignKey('Project')
    ...

class Project(models.Model):
    name = models.CharField(max_length=255)

现在,在一个视图中,我想注释属于一个项目的所有InformationUnit,所以我这样做:

p = Project.objects.all().annotate(Count('informationunit')

一切正常,而且,我想知道在每个项目中有多少个不同的“用户名”参与其中。也就是说,计算组成一个项目的InformationUnit中有多少个不同的“用户名”。我尝试了以下操作,但是无论用户名如何,它都只计算InformationUnit的数量:

p = Project.objects.all().annotate(Count('informationunit__username')

请注意,用户名不是对象,而是字符串。有没有一种干净的方法可以执行此操作,还是应该基于循环和意大利面条式代码创建更复杂的代码:P

非常感谢!


问题答案:

Count可以distinct这样说:

p = Project.objects.all().annotate(Count('informationunit__username', 
                                         distinct=True))

似乎没有记录在案,但你可以在Count的源代码中找到它。



 类似资料:
  • 我已经尝试创建自定义序列化程序,但我无法在那里获得字段名。 在GSON中,我使用了,但Jackson没有这样的功能。有对等的吗?

  • 问题内容: 当您在MySQL表中创建字段时,需要填写“注释”框。如何使用PHP访问“注释”框中的数据? 问题答案: 戳一戳。

  • 问题内容: 我在设置字符串类型时遇到麻烦,就像 而且它没有用,我检查了mysql模式,它仍然是varchar(255),我也尝试过, 要么 我正在尝试将类型设为TEXT,任何想法将不胜感激! 问题答案: 您说“我检查了mysql模式,它仍然是varchar(255)”-您是否希望Hibernate自动更改数据库?不会的 即使您已经设置,我也不相信Hibernate会改变现有的列定义。 如果要生成新

  • 我有一个Spring Boot应用程序,其中包含一个Spring数据Jpa存储库。我需要运行一个单元(或组件?)围绕此存储库进行测试。我对Spring数据Jpa没有太多经验。 这是我的测试。它非常简单,我无法通过。 这是其他相关的源代码。 和 我只是想把Jpa回购协议自动连接到测试中,但我做不到。很明显,我误解了Spring Boot工作原理的一些细微差别。但即使经过了一些教程,我也无法找出我遗漏

  • Java类(用作数据传输对象): 类资源还有一个名为的字段,它的getter和setter具有不同的类型,因此出现语法错误。 由于上面的类是一个DTO,一个JSON响应(带有字段)将映射到它,并且不能使用getId(),我想将字段更改为,并相应地更改getter和setter,并用一个注释标记它,说明bind this to字段。 注意:我用的是Spring靴。我尝试使用@JSONProperty

  • 是否可能在已注释的字段内接收注释值?假设我有这个界面: 我有这样的实施: 我想了解的是:是否可以在MyClass中接收MyAnnoation的值?我想在MyClass类中实现一个方法,它将返回一个分配注释的值。所以,将返回“Annoation”。如果不可能,请通知我。