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

Уникальный состав Django для нескольких полей модели

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

class Post(models.Model):
    submitter = models.ForeignKey(User, null=False, default=None)
    content = models.CharField()
    date = models.DateField()

    with_likes = PostLikeCountManager()
    objects = models.Manager()

class Like(models.Model):
    user = models.ForeignKey(User)
    post = models.ForeignKey(Post)
    time = models.DateTimeField(auto_now_add=True)

Было бы полезно вспомнить модель Post как представляющую пост Facebook. Теперь я хотел бы ограничить одно, как за сообщение на пользователя. Как мне это достичь? Один из способов - создать составной первичный ключ (user, Post) атрибутов класса Like. Я не знаю, как добиться этого в Django. Другой - использовать unique=True для двух атрибутов одновременно. Возможно ли это?

Спасибо.

4b9b3361

Ответ 1

Да, используйте unique_together:

class Like(models.Model):
    user = models.ForeignKey(User)
    post = models.ForeignKey(Post)
    time = models.DateTimeField(auto_now_add=True)

    class Meta:
        unique_together = ('user', 'post')