查询Django的ORM额外的信息
问题描述:
我在我的Django应用程序是这样一些模型:查询Django的ORM额外的信息
我有一个Post
实体:
class Post(models.Model):
....
而且LikePost
实体保存已创建了一个喜欢的网友一个帖子。
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
'函数,但是我没有在两个模型上使用它:在PostPost上查询和在LikePost上的额外信息。 这可能吗? 欢迎任何例子!
-------- ---------编辑
!我无法更改我的模型配置!
答
我不会分开这两个模型。只是新的领域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
你应该看看['ManyToManyField' ](https://docs.djangoproject.com/en/1.8/topics/db/examples/many_to_many/) – IanAuld