python - Django 过滤器:使用分页器在用户和配置文件模型中搜索
问题描述
我正在尝试创建一个管理面板,管理员可以在其中通过用户名、名字、姓氏、邮政编码(来自配置文件模型)等搜索用户。由于某种原因,分页器可以工作,但是当我尝试使用 django 搜索时-过滤,没有任何反应。结果没有改变,我仍然看到所有用户的完整列表。
模型.py:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
birthdate = models.DateField(null=True, blank=False, max_length=8)
phone_number = PhoneNumberField(null=True, blank=False, unique=True)
过滤器.py
import django_filters
from django_filters import CharFilter
from django.contrib.auth.models import User
from .models import *
class AdminUserFilters(django_filters.FilterSet):
first_name_bitch = CharFilter(field_name='first_name', lookup_expr='icontains')
# last_name = CharFilter(field_name='last_name', lookup_expr='icontains')
# zip_code = User.profile.objects.filter(author__user__profile__screenname__icontains=w)
class Meta:
model = User
fields = ('username', 'first_name', 'last_name', 'email',)
视图.py
User_list = User.objects.all().order_by('username')
User_filter = AdminUserFilters(request.GET, queryset=User_list)
paginator = Paginator(User_filter.qs, 10)
page_num = request.GET.get('page', 1)
try:
User_list = paginator.page(page_num)
except PageNotAnInteger:
User_list = paginator.page(1)
except EmptyPage:
User_list = paginator.page(paginator.num_pages)
context = {'User_list': User_list, 'User_filter':User_filter, 'paginator':paginator, 'page_num':page_num,}
return render(request, "admin/listusers.html", context)
列表用户.html
{{ User_filter.form }}
<br>
<button type="submit" type="button" style="height:40px; width:120px" class="btn btn-primary">Search</button>
<br><br>
{% for user in User_list %}
<tr>
<td><a href='/edit_user?edit_username={{ user.username }}'>{{ user.username }}</a></td>
<td style="min-width: 110px">{{ user.date_joined}}</td>
<td><a href='/add_household?username={{ user.username }}'>Edit Household</td>
<td>{{ user.first_name }}</td>
<td>{{ user.last_name }}</td>
<td>{{ user.profile.birthdate }}</td>
<td>{{ user.email }}</td>
<td>{{ user.profile.phone_number }}</td>
<td>{{ user.profile.zip_code }}</td>
</tr>
{% endfor %}
</table>
<p>
<br>
{% if User_list.has_previous %}
<a href="/list_users?page={{ User_list.previous_page_number }}">Previous</a>
{% endif %}
{% if User_list.has_next %}
<a href="/list_users?page={{ User_list.next_page_number }}">Next</a>
{% endif %}
<br><br>
{% for pg in User_list.paginator.page_range %}
{% if page_num|slugify != pg|slugify %}
<input type="button" style="height:50px; width:40px;display: inline-block;" class="btn-primary" onclick="location.href='?page={{pg}}';" value="{{ pg }}" />
{% endif %}
{% endfor %}
解决方案
推荐阅读
- python - 仅当记录不存在时才将行追加/插入/连接到数据帧
- sql - SQL 递归和透视以创建层次结构
- c# - 在 C# 方法中,如何(外部)确定哪些方法使用字段/属性
- c# - 附加到 Azure blob zip 文件
- java - “setOnClicklistener”在 Android Studio 3.5 中不起作用
- javascript - 解决 Node.js 承诺的最佳方法是什么?
- hive - 如何更改 hive 中的列名
- java - 如何在默认媒体播放器中使用 java(Netbeans IDE) 打开/播放视频
- javascript - 为什么 XMLHttpRequest 返回 PHP 代码?Chrome 扩展
- javascript - :主机背景颜色未设置,但字体大小增加?