Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 28, 2014 15:40:03

k0st1an
Зарегистрирован: 2013-02-07
Сообщения: 86
Репутация: +  0  -
Профиль   Отправить e-mail  

filter для DetailView

Вопрос возможно простой, но я только начал изучать 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() метод. Но не получилось сделать фильтр. Покажите пример, как можно фильтровать и перекинуть посетителя на другую страницу (например на главную)?



—-
memento mori

Офлайн

#3 Июнь 28, 2014 21:18:47

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

filter для DetailView

метод get спасет отца русской демократии



Офлайн

#4 Июнь 28, 2014 21:26:31

k0st1an
Зарегистрирован: 2013-02-07
Сообщения: 86
Репутация: +  0  -
Профиль   Отправить e-mail  

filter для DetailView

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



—-
memento mori

Отредактировано k0st1an (Июнь 28, 2014 21:38:34)

Офлайн

#5 Июнь 28, 2014 21:34:17

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

filter для DetailView

Ну Вам же редиректить надо, а это HttpResponse, его возвращает гет а не гетобжект.



Офлайн

#6 Июнь 28, 2014 21:41:42

k0st1an
Зарегистрирован: 2013-02-07
Сообщения: 86
Репутация: +  0  -
Профиль   Отправить e-mail  

filter для DetailView

Я просто пока с трудом перевариваю всю поступающую инфу ко мне. Попробую сделать это в get.



—-
memento mori

Офлайн

#7 Июнь 28, 2014 21:49:31

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

filter для DetailView

Да Вы мнемонически все это безобразие воспринимайте.
get_object - вернуть объект из модели
get_queryset - вернуть выборку данных из модели
Не могут эти методы вернуть ответ на запрос. А вам нужен ответ на запрос. Это post или get чаще всего. Вот его и правьте. Это примерно тоже самое, что в обычной функции-вьюхе

if request.method == "GET":
     тутурутуту
но вынесено в отдельный метод.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version