Если у пользователя есть связанная модель Profile
с полем, например:
from django.conf import settings
class Profile(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
<b>paginate_by</b> = models.PositiveIntegerField(default=10)
# …
Вы можете переопределить метод .get_paginate_by(..)
[Django -doc] :
class CandidateListView(LoginRequiredMixin, ListView):
template_name = 'recruiter/candidate_list.html'
context_object_name = 'candidates'
def get_paginate_by(self, queryset):
return <b>self.request.user.profile.paginate_by</b>
Может быть безопаснее обернуть это try
- except
, если .profile
не существует:
class CandidateListView(LoginRequiredMixin, ListView):
template_name = 'recruiter/candidate_list.html'
context_object_name = 'candidates'
paginate_by = 20
def get_paginate_by(self, queryset):
try:
return self.request.user.profile.paginate_by
except Profile.DoesNotExist:
return super().get_paginate_by(queryset)
Здесь вы вернетесь к 20
, когда профиль для этого пользователя не существует.
Вы можете вернуть None
, если не хотите разбивать результат на страницы.