Guest User

Untitled

a guest
Jul 16th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.69 KB | None | 0 0
  1. class Author(models.Model):
  2. title = CharField()
  3.  
  4. class Genre(models.Model):
  5. title = CharField()
  6.  
  7. class Book(models.Model):
  8. title = CharField()
  9. author = ManyToManyField(Author)
  10. genre = ManyToManyField(Genre)
  11.  
  12. if request.POST:
  13. book_list = Book.objects.all() #get all books from db
  14. books = []
  15.  
  16. request_list = request.POST.getlist('genre') #select list of genres in request
  17. for item in request_list:
  18. add_book = report_list.filter(genre=r_request) #queryset of book filtered by each genre
  19. books.append(add_book)
  20. book_list = book_list.exclude(genre=item)
  21.  
  22. request_list = request.POST.getlist('author') #select list of authors in request
  23. for item in request_list:
  24. add_book = report_list.filter(author=item) #queryset of book filtered by each author
  25. books.append(add_book)
  26. book_list = book_list.exclude(author=item)
  27. return ...
  28. 'books': books
  29.  
  30. genre_list= request.POST.getlist('genre')
  31. author_list = request.POST.getlist('author')
  32. books = Book.objects.filter(genre__in=genre_list,author__in=author_list)
  33.  
  34. from django.db.models import Q
  35. genre_list= request.POST.getlist('genre')
  36. author_list = request.POST.getlist('author')
  37. books = Book.objects.filter(Q(genre__in=genre_list) | Q(author__in=author_list))
  38.  
  39. genre_list= request.POST.getlist('genre')
  40. author_list = request.POST.getlist('author')
  41.  
  42. query = None
  43.  
  44. if gender_list:
  45. gender_q = Q(genre__in=genre_list)
  46. query = gender_q
  47.  
  48. if author_list:
  49. author_q = Q(author__in=author_list)
  50. if gender_list:
  51. query|=author_q
  52. else:
  53. query = author_q
  54.  
  55. books = []
  56. if query:
  57. books = Book.objects.filter(query).distinct()
Add Comment
Please, Sign In to add comment