如何使用 django 通用关系将帖子标记为喜欢



我想在我的应用程序中使用GenericRelations来实现"喜欢"功能。

我已经有了这些模型:

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)

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

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

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

最新更新