Подскажите как можно реализовать следующее. Добавил поле в таблицу is_private которое отсеивает статьи публичные и приватные. И теперь не могу понять как можно реализовать перелистывание статей для двух видов пользователей, суперпользователей и гостей.
Сейчас
models.py
class Article(models.Model):
class Meta:
.....
article_title = models.CharField(
.....
is_private = models.BooleanField(
_("Private article"),
default=True
)
slug = models.SlugField(_("Slug"))
def get_previous_article(self):
try:
self.prev_article = Article.objects.filter(category_id=self.object.category_id) \
.filter(article_datetime__lt=self.object.article_datetime)[0]
except IndexError:
self.prev_article = Article.objects.filter(category_id=self.object.category_id)[0]
return self.prev_article
def get_next_article(self):
try:
self.next_article = Article.objects.filter(category_id=self.object.category_id) \
.filter(article_datetime__gt=self.object.article_datetime).reverse()[0]
except IndexError:
self.next_article = Article.objects.filter(category_id=self.object.category_id) \
.reverse()[0]
return self.next_article
views.py
class ArticleFully(DetailView):
template_name = "my_blog/article.html"
model = Article
def get_context_data(self, **kwargs):
context = super(ArticleFully, self).get_context_data(**kwargs)
context["previous_article"] = Article.get_previous_article(self)
context["next_article"] = Article.get_next_article(self)
return context
Пока в голову приходит только добавить еще по методу в модель который дополнительно фильтровал бы по полю is_private. А уже в представлении определять суперпользователь или нет.
Но этот вариант приведет к дублированию кода, помогите советом как можно иначе реализовать