Django: Выполните нечувствительные к регистру поиски по умолчанию

Как указал Мадхан в своем ответе, вы пытаетесь использовать список в качестве первого индекса, а не строку.

Взято из pydocs:

str.join (итерируемый) Возвращает строку, которая является конкатенацией строк в итерируемой. Ошибка TypeError будет возникать, если в итерируемых есть какие-либо нестроковые значения, включая байтовые объекты. Разделителем между элементами является строка, обеспечивающая этот метод.

Таким образом, вам нужно предоставить только строки в вашей итерации. Но если вы видите свой код, вы используете список объектов нескольких типов.

Первый индекс представляет собой список, а другие индексы являются строками.

Вот что происходит:

your_param = [plist[1:3], plist[5], plist[4], plist[7], plist[6]]

type(your_param)
<class 'list'>

for param in your_param:
    type(param)

<class 'list'> # <--- HERE
<class 'str'>
<class 'str'>
<class 'str'>
<class 'str'>

Если вы хотите, чтобы все в одной строке, вы можете сделать что-то вроде:

your_param = [''.join(plist[1:3]), plist[5], plist[4], plist[7], plist[6]]

for param in your_param:
    type(param)

<class 'str'>
<class 'str'>
<class 'str'>
<class 'str'>
<class 'str'>
6
задан Baishampayan Ghose 10 February 2009 в 11:32
поделиться

2 ответа

Менеджеры не могут быть добавлены к классам с простым присвоением атрибута (User.objects = MyManager()). Посмотрите на метакласс ModelBase (db/models/base.py) для наблюдения то, что все сделано для Вас негласно, когда Вы разделяете Модель на подклассы.

Необходимо смочь заставить его работать с User.add_to_class('objects', MyManager()). С другой стороны, Вы могли сделать подкласс прокси Пользователя и добавить менеджера там.

4
ответ дан 10 December 2019 в 02:54
поделиться

Вы не хотите смешивать с внутренними функциями классов Django. Тот путь находится проблема с каждым обновлением в будущем.

Если Вы хотите изменить путь, люди аутентифицируют, пишут пользовательский бэкенд аутентификации.

Вот два рецепта.

http://www.davidcramer.net/code/224/logging-in-with-email-addresses-in-django.html

http://www.djangosnippets.org/snippets/577/

Оба из них нас электронная почта вместо имени пользователя. Не трудно использовать нечувствительный к регистру запрос вместо почтового запроса.

5
ответ дан 10 December 2019 в 02:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: