django - 有什么简单的方法可以在一行中获取所有输入吗?
问题描述
search = True if (
request.POST.get('name') or request.POST.get('city') or
request.POST.get('email') or request.POST.get('tag') or
request.POST.get('status') or
request.POST.get('source') or
request.POST.get('assigned_to')
) else False
我试过 request.POST.get('name',.....etc)
但它现在正在工作。我可以在一个地方分配所有内容吗?
view.py 的完整代码
def lead_list_view(request):
queryset = Lead.objects.all().exclude(status='converted'
).select_related('created_by'
).prefetch_related('tags', 'assigned_to',)
if request.user.role == 'ADMIN' or request.user.is_superuser:
queryset = queryset
else:
queryset = queryset.filter(
Q(assigned_to__in=[request.user]) |
Q(created_by=request.user))
if request.method == 'GET':
context = {}
if request.GET.get('tag', None):
queryset = queryset.filter(tags__in = request.GET.getlist('tag'))
open_leads = queryset.exclude(status='closed')
close_leads = queryset.filter(status='closed')
context["status"] = LEAD_STATUS
context["open_leads"] = open_leads
context["close_leads"] = close_leads
context["per_page"] = request.POST.get('per_page')
context["source"] = LEAD_SOURCE
context["users"] = User.objects.filter(
is_active=True).order_by('email').values('id', 'email')
tag_ids = list(set(queryset.values_list('tags', flat=True,)))
context["tags"] = Tags.objects.filter(id__in=tag_ids)
return render(request, 'leads.html', context)
if request.method == 'POST':
context = {}
search = True if (
request.POST.get('name') or request.POST.get('city') or
request.POST.get('email') or request.POST.get('tag') or
request.POST.get('status') or
request.POST.get('source') or
request.POST.get('assigned_to')
) else False
context["search"] = search
request_post = request.POST
if request_post:
if request_post.get('name'):
queryset = queryset.filter(
Q(first_name__icontains=request_post.get('name')) or
Q(last_name__icontains=request_post.get('name')))
if request_post.get('city'):
queryset = queryset.filter(
city__icontains=request_post.get('city'))
if request_post.get('email'):
queryset = queryset.filter(
email__icontains=request_post.get('email'))
if request_post.get('status'):
queryset = queryset.filter(status=request_post.get('status'))
if request_post.get('tag'):
queryset = queryset.filter(tags__in=request_post.getlist('tag'))
if request_post.get('source'):
queryset = queryset.filter(source=request_post.get('source'))
if request_post.getlist('assigned_to'):
queryset = queryset.filter(
assigned_to__id__in=request_post.getlist('assigned_to'))
queryset = queryset.distinct()
open_leads = queryset.exclude(status='closed')
close_leads = queryset.filter(status='closed')
context["status"] = LEAD_STATUS
context["open_leads"] = open_leads
context["close_leads"] = close_leads
context["per_page"] = request.POST.get('per_page')
context["source"] = LEAD_SOURCE
context["users"] = User.objects.filter(
is_active=True).order_by('email').values('id', 'email')
tag_ids = list(set(queryset.values_list('tags', flat=True,)))
context["tags"] = Tags.objects.filter(id__in=tag_ids)
context["assignedto_list"] = [
int(i) for i in request.POST.getlist('assigned_to', []) if i]
context["request_tags"] = request.POST.getlist('tag')
tab_status = 'Open'
if request.POST.get('tab_status'):
tab_status = request.POST.get('tab_status')
context['tab_status'] = tab_status
return render(request, 'leads.html', context)
# return context
解决方案
你可以这样做
inputs = ['name','city','email','tag','status','source','assigned_to']
search = inputs in request.POST.keys() #boolean
推荐阅读
- pytorch - RuntimeError:输入类型(torch.cuda.FloatTensor)和权重类型(torch.FloatTensor)应该是一样的,但是我把模型和数据设置为cuda
- mysql - 如何在 SELECT 语句中即时更改编码?
- c++ - 使用编译时类型和运行时函数创建 std::tuple
- google-sheets - 谷歌表格公式根据匹配条件查找缺失的数字
- reactjs - 下载超过 10mb React + Spring boot 的文件时出现“无法获取”错误
- database-connection - 连接池是否利用 SQL 页面缓存以及如何利用?
- mvvm - Dagger 2 + Service + Repository(Room DB+Cloud)
- swift - 修改 CVPixelBuffer
- c - 无法运行程序:collect2:错误:ld 返回 1 退出状态
- javascript - 如何在 Reactjs 中删除 cookie