社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

Django原始SQL查询不返回数据

Soumyajit B • 6 年前 • 1608 次点击  
class Post(models.Model):
    author = models.ForeignKey('auth.User',on_delete=models.CASCADE,)
    title = models.CharField(max_length=200)
    text = RichTextField()
    created_date = models.DateTimeField(default=timezone.now)
    published_date = models.DateTimeField(blank=True, null=True)

    def __str__(self):
        return self.title

这是我的样品模型

这是我的观点

def index(request):
    fetch_post_data = Post.objects.filter(published_date__lte=timezone.now()).order_by('-created_date')[:5]
    fetch_pgraph_data = Post.objects.raw("select count(title) as uno,published_date from blog_post group by DATE(published_date)")
    #fetch_pgraph_data = Post.objects.raw("select * from blog_post")
    template_var = {'postodj':fetch_post_data,'userdataobj':fetch_pgraph_data}
    return render(request,'home.html',context=template_var)

当我尝试使用fetch-pgraph数据获取数据时,它显示原始查询必须包含主键

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38107
 
1608 次点击  
文章 [ 1 ]  |  最新文章 6 年前
Daniel Roseman
Reply   •   1 楼
Daniel Roseman    7 年前

正如错误所说, raw 查询必须包含主键。这是因为它们生成模型实例,并且需要密钥才能执行诸如获取其他延迟属性之类的操作。

但我认为你根本不需要一个原始的查询。您可以通过标准ORM方法轻松生成此查询:

Post.objects.values('published_date').annotate(Count('title'))