【发布时间】:2021-10-22 20:56:25
【问题描述】:
在数据库中,我有 20 个模型对象,当我进入模型页面时,我会显示所有 10 条记录。我想创建一个字段来定义显示多少条记录,例如 10 个条目。然后剩下的 10 个条目将在 2 页上。
【问题讨论】:
标签: django django-models django-views django-admin
在数据库中,我有 20 个模型对象,当我进入模型页面时,我会显示所有 10 条记录。我想创建一个字段来定义显示多少条记录,例如 10 个条目。然后剩下的 10 个条目将在 2 页上。
【问题讨论】:
标签: django django-models django-views django-admin
我相信您正在寻找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
【讨论】:
补充答案Eyob Tariku。
# 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("../")
在模板文件夹中,我创建了“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" %}
【讨论】: