gpt4 book ai didi

django postgresql join操作查询

转载 作者:行者123 更新时间:2023-11-29 13:03:49 25 4
gpt4 key购买 nike

我有如下所示的 Django 模型,我需要创建一个 View ,我必须在其中获取 post.id、post.title、post.description、owner.name、该帖子 id 的点赞数。如何制作获取所有这些详细信息的单个查询?有什么建议吗?

class Post(models.Model):
title=models.CharField(max_length=150)
description=models.TextField()
owner=models.ForeignKey("User")

class User(models.Model):
name=models.CharField(max_length=200)
location=models.CharField(max_length=200)

class comment(models.Model):
post_id=models.ForeignKey("Post", null=True,blank=True)
user_id=models.ForeignKey("USER")

// #likes may be for post or for comment
class likes(models.Model):
post_id=models.ForeignKey("Post", null=True,blank=True)
comment_id=models.ForeignKey("comment", null=True,blank=True)
user_id=models.ForeignKey("USER")

最佳答案

您可以使用 select_related在单个查询中加入 User 模型,以及 annotate 计算给定帖子的点赞数:

from django.db.models import Count

my_id = 42
post = Post.objects.select_related('owner') \
.annotate(num_likes=Count('likes')) \
.get(id=my_id)

然后您可以访问这些值:

post.id
post.title
post.description
post.owner__name
post.num_likes

关于django postgresql join操作查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20797551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com