如何在django中过滤数据?
我使用分页到我的视图,可以用subject_name关键字搜索数据,但现在我想根据主题持续时间以下拉格式搜索它们 views.py如何在django中过滤数据?,django,django-templates,django-filter,Django,Django Templates,Django Filter,我使用分页到我的视图,可以用subject_name关键字搜索数据,但现在我想根据主题持续时间以下拉格式搜索它们 views.py def servicesview(request): key = request.GET.get("search_key", "") inst = request.GET.get("search_key1", "") q_objects = Q() if key: q_objects.add(Q(subject_nam
def servicesview(request):
key = request.GET.get("search_key", "")
inst = request.GET.get("search_key1", "")
q_objects = Q()
if key:
q_objects.add(Q(subject_name__icontains=key), Q.AND)
if inst:
q_objects.add(Q(subject_duration=inst), Q.AND)
if q_objects:
services = ServicesData.objects.filter(q_objects)
else:
services = ServicesData.objects.all()
page = request.GET.get('page', 1)
paginator = Paginator(services, 2)
try:
services = paginator.page(page)
except PageNotAnInteger:
services = paginator.page(1)
except EmptyPage:
services = paginator.page(paginator.num_pages)
return render(request, 'services.html',
{'services': services, 'key': key,'inst':inst})
services.html
<form>
<input type="text" name="search_key" value="{{key}}"
placeholder="Search..">
<select>
<option name="search_key1" value="{{inst}}">Select your
option</option>
</select>
<input type="submit" value="Submit">
</form>
选择您的
选项
但我没有在受试者持续时间内获得数据:
请有人帮忙试试这个
q_对象将收集所有筛选数据并传递给queryset
from django.db.models import Q
def servicesview(request):
key = request.GET.get("search_key", "")
search_key1 = request.GET.get("search_key1", "")
q_objects = Q()
if key:
q_objects.add(Q(subject_name__icontains=key), Q.AND)
if search_key1:
q_objects.add(Q(search_key1=search_key1), Q.AND)
if q_objects:
services = ServicesData.objects.filter(q_objects)
else:
services = ServicesData.objects.all()
page = request.GET.get('page', 1)
paginator = Paginator(services, 2)
try:
services = paginator.page(page)
except PageNotAnInteger:
services = paginator.page(1)
except EmptyPage:
services = paginator.page(paginator.num_pages)
return render(request, 'services.html',
{'services': services, 'key': key})
试试这个
q_对象将收集所有筛选数据并传递给queryset
from django.db.models import Q
def servicesview(request):
key = request.GET.get("search_key", "")
search_key1 = request.GET.get("search_key1", "")
q_objects = Q()
if key:
q_objects.add(Q(subject_name__icontains=key), Q.AND)
if search_key1:
q_objects.add(Q(search_key1=search_key1), Q.AND)
if q_objects:
services = ServicesData.objects.filter(q_objects)
else:
services = ServicesData.objects.all()
page = request.GET.get('page', 1)
paginator = Paginator(services, 2)
try:
services = paginator.page(page)
except PageNotAnInteger:
services = paginator.page(1)
except EmptyPage:
services = paginator.page(paginator.num_pages)
return render(request, 'services.html',
{'services': services, 'key': key})
您没有相应地填充您的。您需要在html中循环使用可能的选项,例如
<select>
<option name="search_key1" value="">Make you choice</option>
{% for service in services %}
<option name="search_key1" value="{{ service.subject_duration }}">{{ service.subject_duraion }}</option>
{% endfor %}
</select>
然后将其添加到渲染的上下文中,并如上所述在其上循环。您没有相应地填充渲染。您需要在html中循环使用可能的选项,例如
<select>
<option name="search_key1" value="">Make you choice</option>
{% for service in services %}
<option name="search_key1" value="{{ service.subject_duration }}">{{ service.subject_duraion }}</option>
{% endfor %}
</select>
然后将其添加到渲染的上下文中,并如上所述在其上循环。答案如下
def servicesview(request):
keyword = Db.objects.all().values_list('keyword', flat=True)
sub = request.GET.get("search_key", "")
q_objects = Q()
if sub:
q_objects.add(Q(subject_name__icontains=sub), Q.AND)
if q_objects:
services = ServicesData.objects.filter(q_objects)
else:
services = ServicesData.objects.all()
page = request.GET.get('page', 1)
paginator = Paginator(services, 2)
try:
services = paginator.page(page)
except PageNotAnInteger:
services = paginator.page(1)
except EmptyPage:
services = paginator.page(paginator.num_pages)
return render(request, 'services.html',
{'services': services, 'sub': sub, 'keyword':keyword})
答案应该是这样的
def servicesview(request):
keyword = Db.objects.all().values_list('keyword', flat=True)
sub = request.GET.get("search_key", "")
q_objects = Q()
if sub:
q_objects.add(Q(subject_name__icontains=sub), Q.AND)
if q_objects:
services = ServicesData.objects.filter(q_objects)
else:
services = ServicesData.objects.all()
page = request.GET.get('page', 1)
paginator = Paginator(services, 2)
try:
services = paginator.page(page)
except PageNotAnInteger:
services = paginator.page(1)
except EmptyPage:
services = paginator.page(paginator.num_pages)
return render(request, 'services.html',
{'services': services, 'sub': sub, 'keyword':keyword})
请你检查一下……我更新了图片。看这里,我没有从我的模型中获取数据。我想根据我的主题持续时间进行筛选。你想只使用关键字进行筛选并选择选项吗?我为主题名称指定的搜索框,如果我在其中输入任何主题名称,它将进行搜索。我想在下拉菜单中输入持续时间,这样用户就可以在搜索框中输入主题名称,并从下拉菜单中选择可用时间。这意味着您只想搜索两个字段“主题名称”和“主题持续时间”?这是真的吗。然后我会编辑答案。正如你们所说,我编辑了答案,请让我知道它是否有效。将您的持续时间字段更改为数据库字段。请检查一下……我更新了图片。看这里,我没有从我的模型中获取数据。我想根据我的主题持续时间进行筛选。你想只使用关键字进行筛选并选择选项吗?我为主题名称指定的搜索框,如果我在其中输入任何主题名称,它将进行搜索。我想在下拉菜单中输入持续时间,这样用户就可以在搜索框中输入主题名称,并从下拉菜单中选择可用时间。这意味着您只想搜索两个字段“主题名称”和“主题持续时间”?这是真的吗。然后我会编辑答案。正如你们所说,我编辑了答案,请让我知道它是否有效。将您的持续时间字段更改为数据库字段。检查更新答案后,请在q_对象中添加您的数据库字段。添加(q(yourdatabasefield=search_key1),q和)它将永远不会呈现…首先必须在视图中获取模型字段,并且在为字段分配一个键后必须放入.html…我没有得到所需的内容,先生…在搜索后执行此操作,分页不起作用…过滤后总数据是否大于2?检查答案更新后,请添加数据库添加(q(yourdatabasefield=search_key1)、q和)它将永远不会呈现…首先必须在视图中获取模型字段,并且在为字段分配一个键后必须放入.html…我没有得到所需的内容,先生…在搜索后执行此操作,分页不起作用…在过滤后,总数据是否大于2?