Разграничить доступ к посту в зависимости от типа пользователя - PullRequest
0 голосов
/ 01 мая 2020

Я занимаюсь разработкой блога, и мне нужен дифференцированный доступ к записи в зависимости от типа пользователя. Если сообщение является черновиком, его может прочитать только пользователь, в противном случае каждый может его прочитать.

У меня есть этот код в views.py:

geopost_filter = GeoPost.objects.filter(Q(draft=False) and Q(publishing_date__lte=timezone.now()))

def single_geopost(request, slug_post):
    if request.user.is_staff:
        geopost = get_object_or_404(GeoPost, slug_post=slug_post)
    else:
        geopost = get_object_or_404(geopost_filter, slug_post=slug_post)
    context = {
        "post": geopost,
        }
    template = 'geoblog/single_geopost.html'
    return render(request, template, context)

Эта функция не ' Я не могу читать пост, являюсь ли я сотрудником или простым пользователем. Где я не прав?

1 Ответ

1 голос
/ 01 мая 2020
# Just need to change your geopost_filter query

geopost_filter = GeoPost.objects.filter(draft=False, publishing_date__lte=timezone.now())

def single_geopost(request, slug_post):
    if request.user.is_staff:
        geopost = get_object_or_404(GeoPost, slug_post=slug_post)
    else:
        geopost = get_object_or_404(geopost_filter, slug_post=slug_post)
    context = {
        "post": geopost,
        }
    template = 'geoblog/single_geopost.html'
    return render(request, template, context)
...