嗨Stackoverflow人,
我在Django中遇到一个与select_related查询有关的奇怪问题。我安装了django-cities app,其中列出了大量城市的地理信息。 在我的项目模型中,我为city元素创建了一个外键,用于将位置存储在 models.py 中。
from cities.models import City
class Project(models.Model):
...
city = models.ForeignKey(City, blank = True, null = True)
由于有大量可能的城市,我在基于类的视图中创建了一个查询,该查询在创建Project对象时选择相关的城市字段。
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仍然从数据库中提取无数的外键。记录器显示无限数量的以下请求。
... DEBUG(0.000)SELECT" cities_region"。" id"," cities_region"。" name", " cities_region"。" slug"," cities_region"。" name_std", " cities_region"。"代码"," cities_region"。" country_id"从 " cities_region"在哪里" cities_region"。" id" = 3861887; ARGS =(3861887) DEBUG(0.000)SELECT" cities_country"。" id"," cities_country"。" name", " cities_country"。" slug"," cities_country"。" code", " cities_country"。"人口"," cities_country"。"大陆", " cities_country"" TLD"来自" cities_country"哪里 " cities_country"" ID" = 3865483; args =(3865483,)D ...
如何在执行ProjectCreate类时强制选择相关方法?
感谢您的帮助和建议!
答案 0 :(得分:1)
在没有任何测试的情况下,您是否尝试重写get_queryset
方法而不是使用queryset
属性?至少你会对异常捕捉和其他技术更加灵活。