如何加上「;注「;将数据导入带有多个“;价值观;用django模型?

如何加上「;注「;将数据导入带有多个“;价值观;用django模型?,django,django-models,django-queryset,Django,Django Models,Django Queryset,示例模型: class A(models.Model): id = models.CharField(max_length=255, primary_key=True, default=make_uuid, editable=False) b = models.IntegerField() 目标: 我需要获取包含id、b和相同的b\u总数的列表 e、 g.以下quetyset返回: a = list(models.Cell.objects.all().values("b").a

示例模型

class A(models.Model):
    id = models.CharField(max_length=255, primary_key=True, default=make_uuid, editable=False)
    b = models.IntegerField()
目标
我需要获取包含
id
b
相同的b\u总数的列表

e、 g.以下quetyset返回:

a = list(models.Cell.objects.all().values("b").annotate(same_b_total=Count("b")))
print(a)  # [{"b": 1, "same_b_total": 5}, {"b": 2, "same_b_total": 3}]
当我将
id
添加到
.values(“b”,“id”)
中时,它将返回包含以下数据的列表

[{'b': 1, 'id': '<some uuid>', 'same_b_total': 1}, {'b': 1, 'id': '<some uuid2>', 'same_b_total': 1}, {'b': 2, 'id': '<some uuid3>', 'same_b_total': 1}, ...]
表格示例:
id(uuid)| b

uuid-1|1
uuid-2|1
uuid-3|2
uuid-4|1
uuid-5|1
uuid-6|1
uuid-7|2
uuid-8 | 2

解释 使用
OuterRef
Subquery
的组合就是您要寻找的。 对于
b
字段的特定整数值,需要获取所有现有行的计数。通过使用
OuterRef('b')
替换特定整数值,结果将转换为子查询。(代替常规查询集)

请注意,
sub
是一个子查询,它本身不存在

sub = A.objects.filter(b=OuterRef('b')).values('b').annotate(same_b_count=Count('id'))
我们需要将
sub
注入到另一个查询中。从关于组合
子查询
外部查询
的帮助中获得以下结果:

A.objects.annotate(same_b_count=Subquery(sub.values('same_b_count'))).values('id', 'b', 'same_b_count')
结论 结合解释中的两个片段:

sub = A.objects.filter(b=OuterRef('b')).values('b').annotate(same_b_count=Count('id'))
A.objects.annotate(same_b_count=Subquery(sub.values('same_b_count'))).values('id', 'b', 'same_b_count')
将产生以下输出:

<QuerySet [{'id': 1, 'b': 1, 'same_b_count': 3}, {'id': 2, 'b': 1, 'same_b_count': 3}, {'id': 3, 'b': 1, 'same_b_count': 3}, {'id': 4, 'b': 3, 'same_b_count': 1}, {'id': 5, 'b': 4, 'same_b_count': 2}, {'id': 6, 'b': 4, 'same_b_count': 2}, {'id': 7, 'b': 6, 'same_b_count': 1}]>


如何将
b
相同的b\u总数
联系起来?你能给我们一些真实的例子吗?@ArakkalAbu添加了表格示例<代码>相同的b_总数
反映相同的b总数。有5个
b
的值为1和3个
b
的值为2So,您希望输出结果如何?
<QuerySet [{'id': 1, 'b': 1, 'same_b_count': 3}, {'id': 2, 'b': 1, 'same_b_count': 3}, {'id': 3, 'b': 1, 'same_b_count': 3}, {'id': 4, 'b': 3, 'same_b_count': 1}, {'id': 5, 'b': 4, 'same_b_count': 2}, {'id': 6, 'b': 4, 'same_b_count': 2}, {'id': 7, 'b': 6, 'same_b_count': 1}]>