从相关表中获取字段/列并进行过滤



我有模型:

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过滤QuerySetanimalregion字段。我想使用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有一些LocationAnimal的价格应该是整个Region的总价。不同的Locations,Animal的计数也不同。

非常感谢!

您可以使用分页类轻松地在DRF响应中使用count
它也可以完美地与django_filters配合使用。

只要检查DRF分页文档并为ModelViewSet配置适当的FilterSet,您就可以开始了。

相关内容

  • 没有找到相关文章

最新更新