0

嗨 Stackoverflow 人,

我在 Django 中遇到了一个与 select_related 查询有关的奇怪问题。我已经安装了django-cities 应用程序,它列出了大量城市的地理信息。在我的项目模型中,我为 city 元素创建了一个外键,以将位置存储在我的models.py 中

from cities.models import City 
class Project(models.Model): 
   ...
   city = models.ForeignKey(City, blank = True, null = True)

由于可能的城市数量众多,我在基于类的视图中创建了一个查询,该查询在创建项目对象时选择相关的城市字段。

from django.views.generic.edit import CreateView, UpdateView, DeleteView
from project.models import Project
class ProjectCreate(CreateView):
    queryset = Project.objects.select_related('city__country', 'city__region').all()
    template_name = 'solution/solution_create_form.html'

但是,当我请求 ProjectCreate 类时,Django 仍然从数据库中提取无数外键。记录器显示无限数量的以下请求。

...调试(0.000)选择“cities_region”。“id”,“cities_region”。“name”,“cities_region”。“slug”,“cities_region”。“name_std”,“cities_region”。“code”,“cities_region” "."country_id" FROM "cities_region" WHERE "cities_region"."id" = 3861887 ; args=(3861887,) DEBUG (0.000) SELECT "cities_country"."id", "cities_country"."name", "cities_country"."slug", "cities_country"."code", "cities_country"."population" , "cities_country"."continent", "cities_country"."tld" FROM "cities_country" WHERE "cities_country"."id" = 3865483 ;

执行 ProjectCreate 类时如何强制选择相关方法?

感谢您的帮助和建议!

4

1 回答 1

3

没有任何测试,您是否尝试过覆盖get_queryset方法而不是使用queryset属性?至少你会更加灵活地使用异常捕获和其他技术。

于 2012-08-19T20:11:23.450 回答