Как пометить сообщение как понравившееся с django Generic Relation - PullRequest
0 голосов
/ 18 декабря 2018

Я хотел бы использовать GenericRelation в своем приложении для реализации функции «Мне нравится».

У меня уже есть эти модели:

class Activity(models.Model):
    LIKE = 'L'
    ACTIVITY_TYPES = (
        (LIKE, 'Like'),
    )
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    activity_type = models.CharField(max_length=1, choices=ACTIVITY_TYPES)
    date = models.DateTimeField(auto_now_add=True)

    content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
    object_id = models.PositiveIntegerField()
    content_object = GenericForeignKey()

    def __str__(self):
        return str(self.user)


class Post(models.Model):
    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    title = models.CharField(max_length=200)
    text = RichTextUploadingField()
    likes = GenericRelation(Activity, related_query_name='posts')
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)


    def __str__(self):
        return self.title

У меня есть файл views.py У меня есть строка вродеthis:

activity = Activity.objects.get(content_type=ContentType.objects.get_for_model(obj), object_id=obj.id, user=request.user)

Моя проблема в том, как я могу получить информацию о том, что этому пользователю этот пост уже понравился?

1 Ответ

0 голосов
/ 19 декабря 2018

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

Поскольку у вас есть одна модель, Post, которая нуждается вчтобы быть привязанным к одной модели Like с некоторыми метаданными, лучше использовать сквозную модель, связывающую эти две модели.Проверьте мой ответ здесь относительно именно этой проблемы.

...