首页 > 解决方案 > 我需要我的 Django get_absolute_url 来做两件不同的事情

问题描述

所以当我想开火时,我对我的一个模型有一个小问题get_absolute_url

当有人在我的网站上创建文章时,我希望它能够将他们返回到“审查中”页面,告诉他们该页面目前正在审查中。但问题是我的站点地图显示每篇文章都是www.example.com/under-review/www.example.com/post/example-slug

我通常会使用return reverse('post-detail', kwargs={'slug': self.slug})解决问题的方法。但是随之而来的问题是,当有人创建文章时,它会将他们直接带到页面而不是under-review页面。

模型:

def get_absolute_url(self):
        # return reverse('post-detail', kwargs={'slug': self.slug})
        return reverse('under-review')

理想情况下,我会拥有它,因此当有人发布帖子时,它会将他们带到under-review页面同时提供服务,return reverse('post-detail', kwargs={'slug': self.slug})因此它可以正确显示在我的站点地图中。

谢谢。

标签: pythonhtmldjango

解决方案


我将在这里做一些假设,但这应该足以引导您朝着正确的方向前进。以下是一些伪代码,您可以根据需要进行调整。

假设您有一个Article模型,例如:

class Article(models.Model):
    is_reviewed = models.BooleanField()

然后您的post-detail视图可以检查此字段:

def get_post_detail(request, article_id):
    article = Article.objects.get(id=article_id)
    if post.is_reviewed:
        return render(request, 'myapp/article.html', {'article': article}) 
    return render(request, 'myapp/under_review.html', {'article': article}) 


推荐阅读