аргумент типа ‘NoneType’ не может быть повторен для строки django » «

#django #python-3.x #django-views #django-queryset

#django #python-3.x #django-представления #django-набор запросов

Вопрос:

Я пытаюсь разделить свой запрос на основе пробела " " . example first_name last_name однако, если я пытаюсь проверить наличие пробелов в моем seach, я получаю сообщение об ошибке

аргумент типа ‘NoneType’ не может быть повторен

 if ' ' in query: #This is where is the error is generated
  

Пытаюсь исправить вышеуказанную проблему. Ниже приведен весь код целиком

 class QList(SelectRelatedMixin, ListView):
    model = Question

    def get_queryset(self):
        queryset = super(QList, self).get_queryset().order_by('-created_at')
        query = self.request.GET.get('q')

        if ' ' in query:
            query = query.split()
            queryset = queryset.filter(
                chain(User.objects.filter(first_name__icontains=query[0], last_name__icontains=query[1]),
                      User.objects.filter(first_name__icontains=query[1], last_name__icontains=query[0])))

            return queryset
        else:
            queryset = queryset.filter(
                Q(user__username__iexact=query) |
                Q(user__first_name__iexact=query) |
                Q(user__last_name__iexact=query)

                )
        return queryset
  

Кто-нибудь может предложить обходной путь

Комментарии:

1. Что вы хотите проверить. query Пусто в if ' ' in query ?

2.@ShafikurRahman просто хочет отделить first_name " " last_name . Итак, если между двумя словами есть space или " " . 1-е слово становится 1-м именем, а 2-е слово становится фамилией

Ответ №1:

Чтобы разделить строку, просто скажите, что вас зовут «Марко Бьянки».

 query = "Marco Bianchi"
first_name = query.split(" ")[0]
last_name = query.split(" ")[1]
  

Обновить:
Вместо

 if ' ' in query:
     query = query.split()
  

Используйте это

 query = query.split(" ")
  

Ответ №2:

вы можете использовать разделенную строку как :

 class QList(SelectRelatedMixin, ListView):
model = Question

def get_queryset(self):
    queryset = super(QList, self).get_queryset().order_by('-created_at')
    query = self.request.GET.get('q')

    query = query.split()

    if len(query) == 2:
        queryset = queryset.filter(
        chain(User.objects.filter(first_name__icontains=query[0], last_name__icontains=query[1]),
              User.objects.filter(first_name__icontains=query[1], last_name__icontains=query[0])))
    else:
        queryset = queryset.filter(
            Q(user__username__iexact=query) |
            Q(user__first_name__iexact=query) |
            Q(user__last_name__iexact=query)

            )

    return queryset