Найти - Пользователи
Полная версия: filter для DetailView
Начало » Django » filter для DetailView
1
k0st1an
Вопрос возможно простой, но я только начал изучать django и особенно CBV.

Есть вот такой вьювер.

class ShowImage(generic.DetailView):
    model = Files
    context_object_name = 'image'
    slug_field = 'uid'
    slug_url_kwarg = 'uid'

Url

url(r'^(?P<uid>\w+)$', ShowImage.as_view(), name='show_image_view'),

В моделе есть поле is_private, мне надо как-то перекинуть посетителя на другую страницу, если это поле True. Я пробовал использовать get_queryset() метод. Но не получилось сделать фильтр. Покажите пример, как можно фильтровать и перекинуть посетителя на другую страницу (например на главную)?
FishHook
метод get спасет отца русской демократии
k0st1an
inoks
Спасибо.

FishHook
Есть ли разница где размещать?

    def get_object(self, queryset=None):
        update = super(ShowImage, self).get_object()
        if update.is_private:
            raise Http404
        update.last_access = timezone.now()
        update.number_shows += 1
        update.save()
        return update
FishHook
Ну Вам же редиректить надо, а это HttpResponse, его возвращает гет а не гетобжект.
k0st1an
Я просто пока с трудом перевариваю всю поступающую инфу ко мне. Попробую сделать это в get.
FishHook
Да Вы мнемонически все это безобразие воспринимайте.
get_object - вернуть объект из модели
get_queryset - вернуть выборку данных из модели
Не могут эти методы вернуть ответ на запрос. А вам нужен ответ на запрос. Это post или get чаще всего. Вот его и правьте. Это примерно тоже самое, что в обычной функции-вьюхе
if request.method == "GET":
     тутурутуту
но вынесено в отдельный метод.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB