0

このスニペットと同様の構造のアプリがあります

class Blog(models.Model):
    name = models.CharField(max_length=25)

class Category(models.Model):
    name = models.CharField(max_length=25)
    blog = models.ForeignKey(Blog)

class Entry(models.Model):
    title = models.CharField(max_length=25)
    category = models.ForeignKey(Category)

他のアプリで使用して、カテゴリとエントリを含むすべてのブログを取得できる、最も一般的な方法は何ですか?

ブログモデルのマネージャーを作成することを考えました。このマネージャーは、そのブログのすべてのカテゴリを取得できますが、モデル名をハードコーディングしています。

 class BlogManager(models.Manager):
     def categories(self):
         return Category.objects.filter(blog=self)

助言がありますか?

4

2 に答える 2

3

必要なのはSelect Relatedです。外部キー関係を自動的に「たどる」QuerySet を返し、クエリを実行するときに追加の関連オブジェクト データを選択します。ブログのクエリは次のようになります。

Blog.objects.select_related().filter( something )

また

Blog.objects.select_related().get( something )
于 2012-06-06T06:48:32.170 に答える
0

標準的な方法を使用しないのはなぜですか?Blog の PK を使用して FK 関係でフィルタリングします。

Category.objects.filter(blog__pk=self.pk)
于 2012-06-06T13:41:25.183 に答える