Advertisement
hellsgate

Use variable for django ORM order_by

Sep 12th, 2013
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.49 KB | None | 0 0
  1. def customers(request):
  2.     filtered = False
  3.     sort_field = request.GET.get('sort', 'first_name')
  4.     form = SearchForm(request.POST or None, request.FILES or None)
  5.     if sort_field == 'address__city' and form.city == '':# or None, depending on the field type for city
  6.         sort_field = 'address__county'
  7.     our_customers = Customer.objects.order_by(sort_field)
  8.  
  9.     if request.method == 'POST' and \
  10.            form.is_valid() and \
  11.            form.cleaned_data['search'] and \
  12.            'clear-searchform' not in request.POST:
  13.         search = form.cleaned_data['search']
  14.         search_list = search.split()
  15.         duplicated_customers = []
  16.         for item in search_list:
  17.         the_customers = Customer.objects.filter(
  18.             Q(slug__icontains=item) |
  19.             Q(first_name__icontains=item) |
  20.             Q(surname__icontains=item) |
  21.             Q(dob__icontains=item) |
  22.             Q(phone__number__icontains=item) |
  23.             Q(email__email__icontains=item) |
  24.             Q(address__address__icontains=item) |
  25.             Q(address__city__icontains=item) |
  26.             Q(address__county__icontains=item) |
  27.             Q(address__postcode__icontains=item) |
  28.             Q(address__country__icontains=item) |
  29.             Q(medical__icontains=item) |
  30.             Q(notes__icontains=item)
  31.             # need to amend so can search by organization
  32.             )
  33.             duplicated_customers = chain(duplicated_customers, the_customers)
  34.             filtered = True
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement