Как красиво обработать посты с группой, посты без группы и не созданные группы?

Есть следующий код:

models.py
class Group(models.Model):
    title = models.CharField(max_length=200)
    slug = models.SlugField(max_length=50, unique=True)
    description = models.TextField(max_length=1000)
 
 
class Post(models.Model):
    text = models.TextField()
    pub_date = models.DateTimeField(auto_now_add=True)
    group = models.ForeignKey(Group, on_delete=models.SET_NULL, blank=True, null=True)
 
 
views.py
def group(request, slug):
    if slug == 'no-group':
        group = None
    else:
        group = get_object_or_404(Group, slug=slug)
    posts = Post.objects.filter(group=group)
    context = {
        'group': group,
        'posts': posts[:5],
    }
    return render(request, 'group.html', context)

Реакции которой я пытаюсь добиться:

  • Если группа существует -> показываем посты группы
  • Если группа не существует -> ошибка 404
  • Если пост без группы (no-group) -> показываем посты без группы

Данный код работает но кажется мне очень не оптимальным. Есть идеи как его улучшить? Спасибо!

Вернуться на верх