首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django:在基于类的视图中纠正select_related

Django:在基于类的视图中纠正select_related
EN

Stack Overflow用户
提问于 2012-08-19 06:53:16
回答 1查看 1.5K关注 0票数 0

嗨,斯塔克溢出的人,

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

代码语言:javascript
复制
from cities.models import City 
class Project(models.Model): 
   ...
   city = models.ForeignKey(City, blank = True, null = True)

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

代码语言:javascript
复制
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,从”cities_region“中选择”cities_region“。”id“= 3861887;args=(3861887,) DEBUG (0.000)选择"cities_country“。”id“,”cities_country“。”name“,”cities_country“。”slug“,”cities_country“。”code“,”cities_country“。”cities_country“,”cities_country“,”cities_country“。”cities_country“,”tld“从”cities_country“中选择”cities_country“。”id“= 3865483;args=(3865483,)D.

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

感谢您的帮助和建议!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-19 20:11:23

在没有任何测试的情况下,您是否尝试过重写get_queryset方法而不是使用queryset属性?至少,在异常捕获和其他技术方面,您将更加灵活。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12024792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档