Как отобразить пользовательское количество записей модели
В базе данных у меня 20 объектов модели, когда я захожу на страницу модели, у меня отображаются все 10 записей. Я хочу сделать поле, определяющее, сколько записей отображать, например 10 записей. Тогда оставшиеся 10 записей будут на 2 странице.
Я полагаю, что вы ищете опцию ModelAdmin.list_per_page. В своем файле admin.py
определите страницу администратора и добавьте вышеупомянутую опцию с желаемым количеством экземпляров на странице.
# yourapp/admin.py
from django import admin
from .models import Product
@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
list_per_page = 10 # To show 10 model instance per page
Дополняющий ответ Эйоб Тарику.
# admin.py
@admin.register(YourModel)
class YourModelAdmin(admin.ModelAdmin)
def get_urls(self):
urls = super().get_urls()
info = self.get_model_info()
custom_urls = [
path('change-count-displayed/', self.set_count_displayed),
]
return custom_urls + urls
def set_count_displayed(self, request):
count = int(request.POST['count'])
if count > 0:
self.list_per_page = count
else:
# Your error handling
return HttpResponseRedirect("../")
в шаблонах foler я создаю "count_display_form.html" и "change_list.html"
<!-- count_display_form.html -->
<form action="change-count-displayed/" method="post" style="width: 300px; display: inline-block;">
{% csrf_token %}
<input class='vIntegerField' type="number" step="1" pattern="\d+" name='count'{{form.count}} style="width: 75px" />
<input type="submit" class="btn btn-outline-primary" value="Go" style="margin-right: 5px; margin-left: 15px;">
View on page
</form>
В файле change_list.html я включаю форму
{% include "admin/yourapp/count_display_form.html" %}