下面是一个示例代码,展示如何按照与另一个模型的关系分组模型记录:
from django.db import models
class AnotherModel(models.Model):
name = models.CharField(max_length=100)
# 添加其他字段
class ModelRecord(models.Model):
another_model = models.ForeignKey(AnotherModel, on_delete=models.CASCADE)
# 添加其他字段
class Meta:
ordering = ['another_model'] # 根据另一个模型排序
# 创建另一个模型的实例
another_model1 = AnotherModel.objects.create(name='Model 1')
another_model2 = AnotherModel.objects.create(name='Model 2')
# 创建模型记录的实例,与另一个模型关联
record1 = ModelRecord.objects.create(another_model=another_model1)
record2 = ModelRecord.objects.create(another_model=another_model1)
record3 = ModelRecord.objects.create(another_model=another_model2)
# 按照另一个模型进行分组
groups = ModelRecord.objects.values('another_model').annotate(count=models.Count('id'))
# 打印分组结果
for group in groups:
print(f"另一个模型: {group['another_model']}, 记录数: {group['count']}")
在这个示例中,有两个模型:AnotherModel
和ModelRecord
。ModelRecord
模型通过ForeignKey
字段与AnotherModel
模型进行关联。
我们通过ModelRecord.objects.values('another_model').annotate(count=models.Count('id'))
进行分组操作。values('another_model')
表示我们要按照another_model
字段进行分组,而annotate(count=models.Count('id'))
表示我们要在每个分组中计算记录的数量。最后,我们使用循环打印出每个分组的结果。
请注意,这只是一个示例代码,您需要根据自己的实际情况进行调整和修改。