Python 如何使用django泛型关系将post标记为“喜欢”
我想在我的应用程序中使用GenericRelation来实现“like”功能 我已经有了这些模型:Python 如何使用django泛型关系将post标记为“喜欢”,python,django,orm,generic-relations,Python,Django,Orm,Generic Relations,我想在我的应用程序中使用GenericRelation来实现“like”功能 我已经有了这些模型: class Activity(models.Model): LIKE = 'L' ACTIVITY_TYPES = ( (LIKE, 'Like'), ) user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) activity_type = m
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
,因此最好使用一个贯穿模型将两者链接起来。看看我关于这个问题的答案