我有一个ArticlePage模型,它有一个城市模型的foriegnkey,我想有效地使用QuerySet来获取一组模型。包含所有已被ArticlePage引用的City实例的城市。
class ArticlePage(Page):
#...
city = models.ForeignKey(City, on_delete=models.PROTECT, null=True)
#...
然后在视图中:
qs = ArticlePage.objects.filter(city__isnull=False).filter(city__name__icontains=self.q).select_related('city')
所以我尝试了上述查询的许多排列,但没有一个返回所需的结果。所有结果都是一组ArticlePage类型而不是City。
我试图做的就是返回一组City类型的结果,其中包含ArticlePage引用的每个City对象,但是我试图用django querysets来解决这个问题,而且我确定我只是在做一些非常愚蠢的事情。感谢这里的任何建议。
答案 0 :(得分:3)
select-related,只是缓存了相关的对象,如果你需要City
的查询集,你需要重写你的qs,例如:
qs_a = ArticlePage.objects.filter(city__isnull=False).values_list('city__pk', flat=True)
qs = City.objects.filter(name__icontains=self.q, pk__in=qs_a)
希望有所帮助