2017-06-28 19 views
0

私はこのパターンを何度も見たことがありますが、なぜ人々がそれを使用して学びたいのか分かりません。Djangoモデルで 'self'外部キーを使用する理由

ここに小さなコピーが貼り付けられています:カテゴリクラスは、自己との外部キー関係を持つブログ投稿カテゴリです。私はこのような関係を持つために何を得ますか?

class Category(models.Model): 
    name = models.CharField(max_length=32) 
    slug = models.SlugField(max_length=32) 
    parent = models.ForeignKey('self', blank=True, null=True) 

次は同じモデルの投稿エントリです。ここでは、このブログがユーザーシステムを持っていれば、エントリーカテゴリーをキーまたはユーザーとして持つことが明らかであることがわかります。

class Entry(models.Model): 
    title = models.CharField(max_length=64) 
    slug = models.SlugField(max_length=32, default='', blank=True) 
    created = models.DateTimeField(auto_now=True) 
    updated = models.DateTimeField(auto_now=True) 
    content = models.TextField() 
    category = models.ForeignKey(Category) 
+1

これにより、カテゴリを別のカテゴリのサブカテゴリにすることができます。基本的に、これはあなたのカテゴリにツリー構造を作成します。あるいは、サイクルでそれらを接続すると、他の奇妙なトポロジーを作ることができると思います。 – Kendas

+0

https://docs.djangoproject.com/en/1.11/ref/models/fields/#foreignkey – Kendas

+0

これは実際にはかなり意味があります。私の素朴なバージョンは別のモデルを使用して、カテゴリとの重要な関係を持つ「サブカテゴリ」と言うことができます。説明をありがとう。 –

答えて

1

ここでは、自分と外部キーの関係を使用することによって、カテゴリの階層構造を持つことができます。親カテゴリとサブカテゴリと同じです。以前のバージョンでは、TreeForeignKeyでした。

関連する問題