Django: Обратный аксессор столкнулся с обратным аксессором

В приведенном ниже коде у меня есть модели поста, лайков, комментариев. Когда я пытаюсь перенести модели, чтобы активировать их, я получаю ошибку обратного аксессора. Для лайков пользователь_that_liked ставит лайк только один раз, в то время как пользователь_liked_to может иметь много лайков. Для комментариев, как пользователь_that_commented, так и пользователь_commented_to могут иметь много комментариев. Как мне настроить мои модели, чтобы я мог делать с ними все, что хочу, и при этом решить эту проблему. Если вам нужна дополнительная информация, дайте мне знать.

from django.db import models
from django.contrib.auth.models import User


class Post(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    post_question = models.CharField(max_length=200)
    pub_date = models.DateTimeField()


class Likes(models.Model):
    user_that_liked = models.ForeignKey(User, on_delete=models.CASCADE)
    user_liked_to = models.ForeignKey(User, on_delete=models.CASCADE)
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    date = models.DateTimeField()
    like_or_dislike = models.IntegerField(default=0)


class Comment(models.Model):
    user_that_commented = models.ForeignKey(User, on_delete=models.CASCADE)
    user_commented_to = models.ForeignKey(User, on_delete=models.CASCADE)
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    date = models.DateTimeField()
    comment = models.CharField(max_length=300)

Необходимо указать связанное имя, чтобы различать отношения

class Post(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    post_question = models.CharField(max_length=200)
    pub_date = models.DateTimeField()


class Likes(models.Model):
    user_that_liked = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user_that_liked')
    user_liked_to = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user_liked_to')
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    date = models.DateTimeField()
    like_or_dislike = models.IntegerField(default=0)


class Comment(models.Model):
    user_that_commented = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user_that_commented')
    user_commented_to = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user_commented_to')
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    date = models.DateTimeField()
    comment = models.CharField(max_length=300)

Однако, перенос этих пользовательских отношений кажется немного избыточным, потому что Likes может иметь только user_that_liked, а user_liked_to может быть получен из понравившегося объекта. (То же самое для комментария)

Итак, пользователь, которому "понравилось", может быть найден через like.post.user, а пользователь, которому понравилось, через like.user_that_liked

Вернуться на верх