Подтвердить что ты не робот

Дизайн модели Django Tag

Мне интересно, правильно ли вы создаете систему тегов для изображений и сможете визуализировать облако тегов:

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.

Просьба сообщить.

4b9b3361

Ответ 1

Если все, что вы хотите сделать, это создать облако тегов, которое должно быть достаточным. Я бы сделал одну модификацию:

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

Это сделает обратный поиск в ваших фотографиях более чистым, чтобы читать и легче запомнить.

Однако я бы рассмотрел другие варианты использования ваших тегов. Облако тегов - единственное, для чего вы хотите использовать тегирование? Есть ли метаданные, которые должны содержать отношения?

Если вы планируете иметь миллионы строк, то кэширование будет таким же важным, как модель данных.

Кроме того, чтобы избежать повторного использования колеса, посмотрите, кто-то еще создал библиотеку, которая служит вашим целям: http://www.djangopackages.com/grids/g/tagging/

Изменить: правописание