Django 过滤器:使用分页器在用户和配置文件模型中搜索

问题描述

我正在尝试创建一个管理面板管理员可以在其中通过用户名、名字、姓氏、邮政编码(来自个人资料模型)等搜索用户。出于某种原因,分页器可以工作,但是当我尝试搜索时使用 django-filter,没有任何反应。结果没有改变,我仍然可以看到所有用户的完整列表。

模型.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,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',)

views.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)

listusers.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 %}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)