我的Django应用程序中有一些模型如下:
我有一个Post
实体:
class Post(models.Model):
....
和LikePost
实体保存在帖子上创建了Like的用户。
class LikePost(models.Model):
# Author info
author_user = models.ForeignKey(User, null=True, related_name='post_likes')
post = models.ForeignKey(Post, related_name="likes")
dateJoined = models.DateTimeField(auto_now_add=True)
我需要检索一些帖子:
Post.objects.filter(....)...
但是对于每个帖子我还需要知道当前用户是否已经在帖子上执行了类似的操作。
所以,我需要有一个查询来检索帖子列表和每个帖子集信息我还要注释这个额外的信息(例如一个额外的字段'liked'= True|False
)
我必须尝试类似' extra
'功能,但我没有在两个模型上使用它:查询关于LikePost的帖子和额外信息。
有可能吗?
欢迎任何例子!
--------编辑---------
!!我无法更改模型配置!!
答案 0 :(得分:1)
我不会将这两个模型分开。只需将新字段liked_by
添加到帖子模型
class Post(models.Model):
user = models.ForeignKey(User, related_name='user_posts')
liked_by = models.ManyToMany(User, related_names='liked_posts')
和
user_liked_posts = request.user.liked_posts.all()
如果您无法更改模型,则:
user_liked_posts = request.user.post_likes.select_related('post')
# likes on posts done by request.user
# so "author_user" is request.user
for like in user_liked_posts:
like.dateJoined
like.post.title