私は現在 Django を使用しており、私のモデルはこのようなものです。
class City(models.Model):
name = models.CharField(max_length=255, primary_key=True)
url = models.URLField()
class Paper(models.Model):
city = models.ForeignKey(City)
name = models.CharField(max_length=255)
price = models.IntegerField()
class Article(models.Model):
paper = models.ForeignKey(Paper)
name = models.CharField(max_length=255)
都市名と紙の価格でフィルタリングして、都市オブジェクト、いくつかの紙オブジェクト、およびいくつかの記事オブジェクトを取得しようとしています。
City テーブルを検索するには、次のようにします。
cities = City.objects.get(pk='Toronto')
Paper オブジェクトを取得するには:
papers = Paper.objects.filter(city=cities, price < 5)
または、2 つを組み合わせることもできます。
papers = cities.paper_set.filter(city=cities, price < 5)
(これはより効率的でしょうか?)
問題は、上記の「論文」からすべての記事を効率的に取得する方法を見つけることです。
papers は QuerySet であるため、papers.article_set は使用できません。そして、ループを使用しようとすると、おそらく紙のオブジェクトごとに 1 回クエリを作成することになりますよね?
参考までに、City テーブルには 1000 列があり、City ごとに 1 ~ 1000 個の Paper オブジェクトがあり、Paper オブジェクトごとに約 10 個の Article オブジェクトがあります。
どんな助けでも本当に感謝します。
ありがとうございました。
編集:都市クエリセット(上記)があると仮定すると、単一のクエリですべての記事オブジェクトを取得する方法はありますか?