0

django.contrib.contenttypes モジュールでクラス GenericForeignKey を使用するタイミングがわかりません

https://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/#django.contrib.contenttypes.generic.GenericForeignKey

上記のリンクを読んだだけですが、わかりません。

そのクラスを使用すると??

そのクラスはいつ役に立ちますか?

例文を教えてください〜

4

1 に答える 1

0

名前はallotと言います。これは、任意のコンテンツタイプにリンクできる外部キーです。つまり、任意のモデルとの関係を持つことができます。良い例は、多数の異なるオブジェクトに投票でき、投票モデルの投票インスタンスが投票したモデルにリンクするだけの投票モデルの場合です。

class Article(models.Model):
    .......

class Video(models.Model):
     ......

class Like(models.Model):
    user = models.ForeignKey(User)
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    obj = generic.GenericForeignKey()

上記のモデルがあるとします。ユーザーは記事と動画を高く評価できますが、データベースに不要なテーブルが作成されるため、記事のいいねと動画のいいねのモデルを別々に作成する必要はありません。好きになることができるモデルの割り当て。これを解決するには、Webサイトのすべてのいいねを1つのモデルに格納できる1つのいいねモデルを作成します。したがって、ユーザーが記事を気に入った場合、Articleモデルへの明示的な外部キーがなくても、likeインスタンスはユーザーと記事に関係があります。これは、likeモデルのコンテンツタイプをコンテンツに設定することによって行われます。気に入ったモデルのタイプ。この場合は「article」になります(この:ContentType.objectsは使用できません)。

article = Article.objects.get(pk=1)
article_ct = ContentType.objects.get_for_model(Article)
user = User.objects.get(username='admin')
Like.objects.create(user=user,  content_type=article_ct, object_id=article.id)
于 2013-02-08T07:12:03.740 に答える