0

Stackoverflow の皆さん、こんにちは。

Django の select_related クエリで奇妙な問題が発生しています。多数の都市の地理情報を一覧表示するdjango-cities appをインストールしました。私のプロジェクト モデルでは、都市要素への外部キーを作成して、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 は依然としてデータベースから無数の外部キーを引き出します。ロガーは、次のリクエストを無制限に表示しています。

... DEBUG (0.000) SELECT "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" , "都市の国"."大陸", "都市の国"."tld" FROM "都市の国" WHERE "都市の国"."id" = 3865483 ;

ProjectCreate クラスを実行するときに、選択関連のメソッドを強制するにはどうすればよいですか?

あなたの助けと提案をありがとう!

4

1 に答える 1

3

テストせずに、属性get_querysetを使用する代わりにメソッドをオーバーライドしようとしましたか? queryset少なくとも、例外のキャッチやその他の手法を使用すると、より柔軟になります。

于 2012-08-19T20:11:23.450 に答える