按日期对博客发表评论排序DJANGO

时间:2020-04-13 17:38:04

标签: django

嗨,我在Django博客应用中的评论有问题。 一切工作正常,只不过我想显示按日期排序的评论(最上方) o,这将是很棒的事,我将能够让实际登录的作者领域用户加入。.TY

views.py

@login_required
def add_comment_to_post(request, pk):
    post = get_object_or_404(Post, pk=pk)
    if request.method == 'POST':
        form = CommentForm(request.POST)
        if form.is_valid():
            comment = form.save(commit=False)
            comment.post = post
            comment.save()
            return redirect('post-detail', pk=post.pk)
    else:
        form = CommentForm()
    return render(request, 'blog/add_comment_to_post.html', {'form': form})

models.py

class Comment(models.Model):
post = models.ForeignKey(Post,on_delete=models.CASCADE,related_name='comments')
author = models.CharField(max_length=100)
text = models.TextField()
created_on = models.DateTimeField(default=timezone.now)
active = models.BooleanField(default=False)

def approve(self):
    self.approved_comment = True
    self.save()

def __str__(self):
    return self.text

forms.py

class CommentForm(forms.ModelForm):

class Meta:

    model = Comment
    fields = ('author', 'text', 'created_on')

2 个答案:

答案 0 :(得分:1)

一个选择是,在您的模型中添加如下的元类

   class Meta:
        ordering = ['-created_on']

答案 1 :(得分:0)

添加class Meta: ordering(-date_posted)date_posted可以改为包含DateTimeField()的变量

class BlogComment(models.Model):
blogpost_connected = models.ForeignKey(Posts, related_name='comments', on_delete=models.CASCADE)
author = models.ForeignKey(User, on_delete=models.CASCADE)
comment = models.CharField(max_length=255, null=True)
date_posted = models.DateTimeField(default=timezone.now)

class Meta:
    ordering = ['-date_posted']

def __str__(self):
    return str(self.author) + ', ' + self.blogpost_connected.title[:40]