如何解决'function' 对象没有属性 'order_by'
我正在 django 中创建一个简单的博客网站,并有一个模型,其中包含在视图中发布博客的时间我试图根据时间对帖子进行排序,它给出了错误“函数”对象没有属性'order_by'
我的views.py:
class AboutView(TemplateView):
template_name = 'blog/about.html'
class Postlistview(ListView):
model = Post
def get_queryset(self):
return Post.objects.filter(published_date__lte=timezone.Now.order_by('-published_date'))
我的models.py:
class Post(models.Model):
author = models.ForeignKey('auth.User',on_delete=models.CASCADE)
title = models.CharField(max_length=100)
text = models.TextField(max_length=200)
created_date = models.DateTimeField(default=timezone.Now)
published_date = models.DateTimeField(blank=True,null=True)
def publish(self):
self.published_date = models.DateTimeField(default=timezone.Now)
self.save()
def get_absolute_url(self):
return reverse('post_detail',kwargs={'pk': self.pk})
def approve_comments(self):
return self.comments.filter(approved_comments=True)
def __str__(self):
return self.title
class Comment(models.Model):
post = models.ForeignKey('blog.Post',related_name='comments',on_delete=models.CASCADE)
text = models.CharField(max_length=200)
author = models.CharField(max_length=20)
create_date = models.DurationField(default=timezone.Now)
approved_comments = models.BooleanField(default=False)
def approve(self):
self.approved_comments = True
self.save()
def get_absolute_url(self):
return reverse('post_list')
def __str__(self):
return self.text
解决方法
我觉得是这样的:
return Post.objects.filter(published_date__lte=timezone.now()).order_by('-published_date')
order_by 必须在您的过滤器之外。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。