问题描述
我正在尝试创建一个管理面板,管理员可以在其中通过用户名、名字、姓氏、邮政编码(来自个人资料模型)等搜索用户。出于某种原因,分页器可以工作,但是当我尝试搜索时使用 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 (将#修改为@)