0

我想在我的应用程序中使用 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文件我有这样的行:

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

我的问题是,我如何才能获得该用户已经喜欢这篇文章的信息?

4

1 回答 1

1

如果您没有充分的理由使用泛型关系,我建议您不要使用.

由于您有一个模型,Post因此需要使用一些元数据将其链接到单个模型Like,因此最好使用连接两者的直通模型。在这里查看我关于这个问题的答案。

于 2018-12-19T12:35:04.320 回答