на Django 1.9, у меня есть форма, которая позволяет пользователю фильтровать модели на основе их ввода:
def get_queryset(self):
cvs = Clean.objects.all()
query = self.request.GET.get('q')
if query:
cvs = cvs.filter(Q(cvscore__gte=query)).distinct()
cvs = cvs.order_by('cvscore')
return cvs
Я хочу, чтобы они также могли искать строку и попытались:
cvs = cvs.filter(Q(cvscore__gte=query) | Q(cv__icontains=query)).distinct()
Проблема в том, что если на входе указан str, будет выдано сообщение об ошибке:
invalid literal for int() with base 10:
Есть ли способ обойти это? Что-то вроде:
def get_queryset(self):
cvs = Clean.objects.all()
query = self.request.GET.get('q')
if query **is an integer**:
cvs = cvs.filter(Q(cvscore__gte=query)).distinct()
cvs = cvs.order_by('cvscore')
else:
cvs = cvs.filter(Q(cv__icontains=query)).distinct()
return cvs