我有模型:
class Animal(models.Model):
pass
class RegionAnimal(models.Model):
price = models.DecimalField(...)
animal = models.ForeignKey(Animal, ..., related_name="region_animals")
region = models.ForeignKey(Region, ...)
class LocationAnimal(models.Model):
count = models.PositiveIntegerField(default=0)
animal = models.ForeignKey(Animal, ..., related_name="location_animals")
location = models.ForeignKey(Location, ...)
我有一个RegionAnimalViewSet(mixins.ListModelMixin, GenericViewSet)
,我可以使用django_filters
过滤QuerySet
与animal
和region
字段。我想使用location
字段从LocationAnimal
添加响应count
字段。我怎样才能做到这一点呢?
所以,我的请求是这样的:
{{ some_endpoint }}/?region=1&location=2
我的期望:
[
...,
{
"id": 1,
"region": {
# region details
},
"animal": {
# animal details
},
"price": 100, # animal price for particular region
"count": 123, # animal count for particular location
},
...
]
供参考:一些Region
有一些Location
。Animal
的价格应该是整个Region
的总价。不同的Location
s,Animal
的计数也不同。
非常感谢!
您可以使用分页类轻松地在DRF响应中使用count
。
它也可以完美地与django_filters
配合使用。
只要检查DRF分页文档并为ModelViewSet配置适当的FilterSet,您就可以开始了。