在Django Rest Fram中合并多个查询集

2024-10-02 10:29:42 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在Django中合并querysets?我使用Django Rest框架。在

我使用以下模型:

class City(models.Model):
    ...

class House(models.Model):
    city = models.ForeignKey(City, ...)
    ...

class Resident(models.Model):
    house = models.Foreignkey(House, ...)
    ...

我现在想要一个视图,列出给定城市的所有居民(slug是城市的slug)。在

我是这样写的:

^{pr2}$

如您所见,我创建了一个城市的居民列表,通过迭代所有的市民并过滤那些居住在正确城市的家庭的人。我只是觉得这是相当糟糕和低效,因为数据库必须循环通过所有公民。 最好有这样的东西

City.objects.get(slug=<cityslug>).houses.residents

那么我只需要在较小的城市里环游。显然,问题在于上面的查询返回了一个queryset。所以我不能像那样把房子和居民连起来。在

附言:如果你有其他的建议,我可以改善我的看法,让我知道!在

PPS:我在stackoverflow上找到了this问题,但它只显示了如何获取一个列表,而这个列表不能与getqueryset和django rest结构一起使用,是吗?在

编辑(更多说明以使问题更好): 因此,我们的目标是实现api路线:

localhost:8000/api/house/<city_slug>/residents/

把城里所有的居民都列出来。在

像这样:

{
  [
    {
      resdidentid = "<some_resident_id>",
      residentname = "<some_resident_name>",
      ...
    },
    {
      resdidentid = "<some_resident_id>",
      residentname = "<some_resident_name>",
      ...
    },
    {
      resdidentid = "<some_resident_id>",
      residentname = "<some_resident_name>",
      ...
    },
    ...
  ]
}

Tags: djangonameidcity列表modelmodelssome

热门问题