django raw sql запрос не возвращает данные - PullRequest
0 голосов
/ 22 сентября 2018
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, он показывает, что необработанный запрос должен включать основнойключ

1 Ответ

0 голосов
/ 26 сентября 2018

Как говорит ошибка, raw запросы должны включать первичный ключ.Это потому, что они генерируют экземпляры модели, а ключ необходим для таких вещей, как выборка других отложенных атрибутов.

Но я не думаю, что вам вообще нужен необработанный запрос.Вы можете легко создать этот запрос с помощью стандартных методов ORM:

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