Задать вопрос
Ответы пользователя по тегу Django
  • Как переопределить дочерний get_context_data от дочернего ListView?

    @Untiwe Автор вопроса
    И так, спустя сутки, нашел решение. Функция определялась в другой функции класса, а не в самом классе. Потому что у меня стояло 8 пробелов вместо 4-ех
    Ответ написан
    Комментировать
  • Как сделать динамическое количество Q запросов?

    @Untiwe Автор вопроса
    Ответ Dr. Bacon не совсем понял, но сделал вот так. Если кому надо, у меня идет определение класса от ListView и определение метода get_queryset. Данный пример не работает сам по себе, но показывает идею

    def get_queryset(self):
            if not self.request.GET:
                return Posts.objects.all()#если нет параметров, просто возвращаем все посты
    
            keyword = self.request.GET.get('key')#получаем ключевое слово
            author= self.request.GET.get('author')#если параметра нет, get() вернет None что равняется False
            name = self.request.GET.get('name')#если параметра нет, get() вернет None что равняется False
            text = self.request.GET.get('text')#если параметра нет, get() вернет None что равняется False
            filters = Q()#создаем первый объект Q, что бы складывать с ним другие
            if author:
                filters |= Q(name__icontains=keyword )
            if name:
                filters |= Q(name__icontains=keyword )
            if text:
                filters |= Q(name__icontains=keyword )
            
            return Posts.objects.filter(filters)
    Ответ написан
    Комментировать
  • Как передать параметр url slug в DetailView?

    @Untiwe Автор вопроса
    Надо было переопределить метод get_object. Его можно не определять, только если используется pk т.к. он используется по умолчанию.
    Минимальное решение:
    class UserView(DetailView):
        model = CustomUser
        template_name = 'user/user.html'
    
        def get_object(self):
            pass


    Но я не до конца понял как оно работает. Буду рад объяснению или ссылке на документацию эта не дала полной картины
    Ответ написан