Независимые модели отношений - PullRequest
0 голосов
/ 29 ноября 2011

Допустим, у меня есть несколько разных моделей в проекте Django. Теперь мне нужно внедрить систему оценки, похожую на reddit, которую можно легко добавить к любой модели в проекте. Модель выглядит так:

class Rating(models.Model):

    vote = models.IntegerField(blank=False, null=False)
    user = models.ForeignKey(User)

Вопрос в том, как подключить эту «абстрактную» модель к любой другой модели в проекте?

Ответы [ 2 ]

1 голос
/ 29 ноября 2011

Вам нужны общие отношения из встроенной структуры типов контента .

1 голос
/ 29 ноября 2011

Во-первых (и с оговоркой, что я ничего не знаю о рейтинговой системе Reddits), если вы не хотите, чтобы пользователи ставили оценки от отрицательных миллионов до положительных миллионов, почему бы не использовать варианты ?

Теперь к проблеме: модель, которая может быть скорректирована, должна иметь отношение, которое допускает множество оценок для одной модели. К сожалению, это означает, что ни одно из полей отношений в Django не будет работать. Абсолютно простое решение этого вопроса - иметь рейтинг в реальной модели.

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

class RateableModel(models.Model):
    rating      = models.Integerfield(...)
    rating_user = models.ForeignKey(User)

    class Meta:
        abstract = True

class SomeModelThatCanBeRated(RateableModel):
    # Fields for this model
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...