获取序列化器中外键字段为 x 的对象数
Get number of objects in serializer where foreign key field is x
假设
class ABC(models.Models):
...
id = models.SlugField(...)
user = models.ForeignKey(settings.AUTH_USER_MODEL)
...
现在我想要
[{id: adfsdd, no_of_user_objects: 5}, {id: gdfvsdf, no_of_user_objects: 0}, {id: ergthf, no_of_user_objects: 2}]
我该如何实现?
用于获取具有相同 slug id 的用户数量的模型 method:
class ABC(models.Models):
...
id = models.SlugField(...)
user = models.ForeignKey(settings.AUTH_USER_MODEL)
...
@property # for using in serializer
def no_of_user_objects(self):
return ABC.objects.filter(id=self.id).count()
并且在您的序列化器中有一个用于查询集序列化器的自定义序列化器:
class ABDSerializer(serializers.ModelSerializer):
class Meta:
model = ABC
fields = ['id', 'no_of_user_objects']
# in your view
queryset = ABC.objects.distinct('id')
serializer = ABDSerializer(queryset, many=True)
print(serializer.data)
# get you [{id: adfsdd, no_of_user_objects: 5}, {id: gdfvsdf, #no_of_user_objects: 0}, {id: ergthf, no_of_user_objects: 2}]
假设
class ABC(models.Models):
...
id = models.SlugField(...)
user = models.ForeignKey(settings.AUTH_USER_MODEL)
...
现在我想要
[{id: adfsdd, no_of_user_objects: 5}, {id: gdfvsdf, no_of_user_objects: 0}, {id: ergthf, no_of_user_objects: 2}]
我该如何实现?
用于获取具有相同 slug id 的用户数量的模型 method:
class ABC(models.Models):
...
id = models.SlugField(...)
user = models.ForeignKey(settings.AUTH_USER_MODEL)
...
@property # for using in serializer
def no_of_user_objects(self):
return ABC.objects.filter(id=self.id).count()
并且在您的序列化器中有一个用于查询集序列化器的自定义序列化器:
class ABDSerializer(serializers.ModelSerializer):
class Meta:
model = ABC
fields = ['id', 'no_of_user_objects']
# in your view
queryset = ABC.objects.distinct('id')
serializer = ABDSerializer(queryset, many=True)
print(serializer.data)
# get you [{id: adfsdd, no_of_user_objects: 5}, {id: gdfvsdf, #no_of_user_objects: 0}, {id: ergthf, no_of_user_objects: 2}]