I am not sure why the paginator is not working. It does show at the bottom of the page but it does not apply to the list objects from "Entity" table.
Is there something i am doing wrong in my html or views?
models.py
class Entity(models.Model):
entity_name = models.CharField(max_length=250, blank=False)
owner = models.ForeignKey(User, on_delete=models.CASCADE, related_name='users')
slug = models.SlugField(max_length=250, unique=True, null=True)
active = models.BooleanField(default=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
verbose_name_plural = "Entities"
def __str__(self):
return self.entity_name
def get_absolute_url(self):
return reverse('snippets:password', kwargs={'pk': self.pk})
views.py
class EntityListView(LoginRequiredMixin, ListView):
template_name = 'snippets/list.html'
def get(self, request):
queryset = Entity.objects.filter(owner=request.user)
paging = queryset
paginator = Paginator(paging, 3)
page = request.GET.get('page')
page_obj = paginator.get_page(page)
return render(request, self.template_name, context={
'entities':queryset,
'page_obj':page_obj
})
html.py
{% for entity in entities %}
<a href='{% url "snippets:password" entity.pk %}'>{{ entity.entity_name }}</br></br></br></a>
{% endfor %}
<div class="pagination">
<span class="step-links">
{% if page_obj.has_previous %}
<a href="?page=1">« first</a>
<a href="?page={{ page_obj.previous_page_number }}">previous</a>
{% endif %}
<span class="current">
Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.
</span>
{% if page_obj.has_next %}
<a href="?page={{ page_obj.next_page_number }}">next</a>
<a href="?page={{ page_obj.paginator.num_pages }}">last »</a>
{% endif %}
</span>
</div>
Any help would be much appreciated.
i think should be like this
return render(request, self.template_name, context={'entities':page_obj,'page_obj':page_obj})
also i think will be more simple like this:
class EntityListView(ListView):
model = Entity
context_object_name = 'entities'
paginate_by = 3