преобразование представления на основе функций в представление на основе классов - PullRequest
0 голосов
/ 09 июня 2019

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

def withSub(request):
    post = Post.objects.filter(with_or_without_sub='WS')
    paginator = Paginator(post, 2)
    page = request.GET.get('page') 
    post = paginator.get_page(page)

    content_dict = {
        'posts':post,
        'paginator':paginator

    }
    return render(request, 'community/withSub.html', content_dict)

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

class PostListView(ListView):
    model = Post
    template_name = 'community/home.html'  # <app>/<model>_<viewtype>.html

Ответы [ 3 ]

0 голосов
/ 09 июня 2019

Если вы хотите настроить набор запросов, используйте атрибут queryset:

class PostListView(ListView):
    queryset = Post.objects.filter(with_or_without_sub='WS')
    template_name = 'community/home.html'
0 голосов
/ 09 июня 2019

Вы можете установить определенный набор запросов, например:

queryset = Post.objects.filter(with_or_without_sub='WS')

или, если в конечном итоге задействована более сложная логика, вы можете переопределить метод представления get_queryset(), например:

from django.views.generic.list import ListView

class PostListView(ListView):
    model = Post
    template_name = 'community/home.html'

    def get_queryset(self):
        return Post.objects.filter(with_or_without_sub='WS', ...)

0 голосов
/ 09 июня 2019

Это может быть что-то вроде следующего.Возможно, вам придется проверить и отладить.Используется equest.GET, поэтому получаем.

from django.views.generic.list import ListView

class PostListView(ListView):
    model = Post
    template_name = 'community/home.html'  # <app>/<model>_<viewtype>.html

    def get(self, request, *args, **kwargs):
        post = Post.objects.filter(with_or_without_sub='WS')
        paginator = Paginator(post, 2)
        page = request.GET.get('page') 
        post = paginator.get_page(page)

        content_dict = {
            'posts':post,
            'paginator':paginator

        }

        context = self.get_context_data()
        context.update(content_dict)
        return self.render_to_response(context)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...