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查询必须包含主键
答案 0 :(得分:0)
如错误所述,raw
查询必须包含主键。这是因为它们会生成模型实例,并且需要键才能进行诸如获取其他延迟属性之类的事情。
但是我认为您根本不需要在这里进行原始查询。您可以通过标准的ORM方法轻松生成此查询:
Post.objects.values('published_date').annotate(Count('title'))