Django Raw SQL查询不返回数据

时间:2018-09-22 17:40:17

标签: django django-models django-views

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_data获取数据时,这表明Raw查询必须包含主键

1 个答案:

答案 0 :(得分:0)

如错误所述,raw查询必须包含主键。这是因为它们会生成模型实例,并且需要键才能进行诸如获取其他延迟属性之类的事情。

但是我认为您根本不需要在这里进行原始查询。您可以通过标准的ORM方法轻松生成此查询:

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