django - How to not use blank input values in a query when submitted in a form -
how not let form use blank inputted data in query?
i want user able fill in either incident id field or equipment id field. want user have option leave either field blank. want query search inputted.
for example: if user enters in incident id '6' , leaves equipment id '', want query work using incident id.
forms.py
from django import forms django.db.models import q .models import incident .models import equipment class incidentform(forms.form): incident_id = forms.charfield(required=false) equipment_id = forms.modelchoicefield(equipment.objects.all(), required=false, widget=forms.textinput) #def clean(self): # i'd use clean method force user provide either incident or equipment value def search(self): return incident.objects.filter( q(id=self.cleaned_data['incident_id']) & q(equipment_id=self.cleaned_data['equipment_id']) ) views.py
from django.http import httpresponseredirect, httpresponse django.core.urlresolvers import reverse django.shortcuts import get_object_or_404, render .forms import incidentform django.views.generic.edit import formview .models import incident def index(request): template = "index.html" if request.method == 'get': form = incidentform(request.get) #incident_list = none if 'equipment_id' in request.get or 'incident_id' in request.get: incident_list = none if form.is_valid(): incident_list = form.search() context = { "form": form, "incident_list": incident_list} return render(request, template, context) else: # form empty show open incidents form = incidentform() incident_list = incident.objects.filter(open = 'true').order_by('-incident_date_time_reported') context = { "form": form, "incident_list": incident_list} return render(request, template, context)
try this:
def search(self): cust_id = self.cleaned_data['incident_id'] or '' equip_id = self.cleaned_data['equipment_id'] or '' return incident.objects.filter( q(id=cust_id) & q(equipment_id=equip_id) )
Comments
Post a Comment