Преобразование представления функций Django в представление на основе классов

Я не знаю, как преобразовать эти функции в представление на основе класса. Как вызвать функции фильтра, добавления и удаления в представлении, основанном на классе? Должен ли я как-то перезаписывать функции в TemplateView?

@ login_required
def favourite_list(request):
    new = Post.newmanager.filter(favourites=request.user)
    return render(request,
                  'accounts/favourites.html',
                  {'new': new})


@ login_required
def favourite_add(request, id):
    post = get_object_or_404(Post, id=id)
    if post.favourites.filter(id=request.user.id).exists():
        post.favourites.remove(request.user)
    else:
        post.favourites.add(request.user)
    return HttpResponseRedirect(request.META['HTTP_REFERER'])

Попробуйте это:

from django.views import View
from django.views.generic.list import ListView
from django.contrib.auth.mixins import LoginRequiredMixin


class FavouriteListView(LoginRequiredMixin, ListView):
    model = Post
    template_name = 'accounts/favourites.html'
    context_object_name = 'new'
    
    def get_queryset(self):
       return Post.newmanager.filter(favourites=request.user)


class FavouriteAddView(LoginRequiredMixin, View):
   def post(self, request):
        post = get_object_or_404(Post, id=id)
        if post.favourites.filter(id=request.user.id).exists():
           post.favourites.remove(request.user)
        else:
           post.favourites.add(request.user)
        return HttpResponseRedirect(request.META['HTTP_REFERER'])
Вернуться на верх