24

画像のタグ付けシステムを作成し、タグクラウドをレンダリングできるようにする正しい方法は、次のとおりかどうか疑問に思っています。

from django.db import models

class Tag(models.Model):
    word        = models.CharField(max_length=35)
    slug        = models.CharField(max_length=250)
    created_at  = models.DateTimeField(auto_now_add=False)

    def __unicode__(self):
        return self.word

class Photo(models.Model):
    slug                = models.CharField(max_length=250)
    filename            = models.CharField(max_length=200)
    extension           = models.CharField(max_length=4)
    size                = models.IntegerField()
    ...
    tags                = models.ManyToManyField(Tag)

    def __unicode__(self):
        return self.slug

私のデータベーステーブルには数百万の行が含まれ、各画像には4〜8個のタグが含まれることに注意してください。

お知らせ下さい。

4

2 に答える 2

29

タグクラウドを作成するだけの場合は、そのデータモデルで十分です。私は1つの変更を行います:

tags = models.ManyToManyField(Tag,related_name='photos')

これにより、写真ビューの逆引き参照が読みやすく、覚えやすくなります。

ただし、タグの他のユースケースを検討します。タグクラウドを使用したいのはタグクラウドだけですか?関係に含める必要のあるメタデータはありますか?

数百万行を計画している場合、キャッシュはデータモデルと同じくらい重要になります。

また、車輪の再発明を避けるために、他の誰かがあなたの目的に役立つライブラリを構築していないかどうかを確認してください:http ://www.djangopackages.com/grids/g/tagging/

于 2012-11-10T01:14:24.193 に答える
3

タグを自分で処理するのは大変な作業になる可能性があります。djangoライブラリを簡単に使用できます。pipでインストールします

pip install django-taggit
于 2020-05-20T11:15:43.293 に答える