Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 25, 2018 14:56:36

MEOW
Зарегистрирован: 2017-06-07
Сообщения: 59
Репутация: +  0  -
Профиль   Отправить e-mail  

Получение значения из объекта django

Приветствую. Поступил небольшой вопрос при работе с базой данных в django. Есть база данных и из неё, я получаю объект. views.py

 mail = request.POST.get('e_mail_log', False)
User.objects.filter(e_mail=mail)
Когда я принтую запрос, у меня выводит:
 <QuerySet [<User: qwerty, 123@mail.ru, 1234>]>
Как получить значения: qwerty, 123@mail.ru и 1234? Не могу понять. Спасибо за помощь

Отредактировано MEOW (Ноя. 25, 2018 14:59:15)

Офлайн

#2 Ноя. 25, 2018 16:09:52

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

Получение значения из объекта django

все верно. ты получаешь QuerySet объект. Чтобы получить результат выполни к итерацию

 mail = request.POST.get('e_mail_log', False)
for x in User.objects.filter(e_mail=mail):
    print(x)

Офлайн

#3 Ноя. 25, 2018 16:48:52

MEOW
Зарегистрирован: 2017-06-07
Сообщения: 59
Репутация: +  0  -
Профиль   Отправить e-mail  

Получение значения из объекта django

Не работает. Цикл работает один раз и выводит

 qwerty, 123@mail.com, 1234
Как взять значения то из этого всего?

Офлайн

#4 Ноя. 25, 2018 16:48:55

MEOW
Зарегистрирован: 2017-06-07
Сообщения: 59
Репутация: +  0  -
Профиль   Отправить e-mail  

Получение значения из объекта django

Не работает. Цикл работает один раз и выводит

 qwerty, 123@mail.com, 1234
Как взять значения то из этого всего?

Офлайн

#5 Ноя. 25, 2018 17:25:42

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

Получение значения из объекта django

MEOW
Цикл работает один раз и выводит
Так и будет тут подробнее про кэш.
Загони в кортеж и обращайся по индексу. Или попробуй метод values()

Офлайн

#6 Ноя. 25, 2018 18:02:31

MEOW
Зарегистрирован: 2017-06-07
Сообщения: 59
Репутация: +  0  -
Профиль   Отправить e-mail  

Получение значения из объекта django

Пробую метод values и получаю:

 <QuerySet [{'id': 21, 'school_name': 'qwerty', 'user_name': 'qwerty', 'e_mail': '123@mail.ru', 'password': '1234'}]>
Но я всё равно не могу вытащить оттуда ничего.

Офлайн

#7 Ноя. 25, 2018 18:10:18

MEOW
Зарегистрирован: 2017-06-07
Сообщения: 59
Репутация: +  0  -
Профиль   Отправить e-mail  

Получение значения из объекта django

Почему когда я принтую type(mass), где mass это

 User.objects.filter(e_mail=mail).values()
то выводит: <class ‘django.db.models.query.QuerySet’>, а когда принтую type(mass)с индексом 0, то говорит, что тип словарь. Как это работает?

Отредактировано MEOW (Ноя. 25, 2018 18:10:48)

Офлайн

#8 Ноя. 25, 2018 21:29:42

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

Получение значения из объекта django

MEOW
очему когда я принтую type(mass), где mass это

 User.objects.filter(e_mail=mail).values()
то выводит: <class ‘django.db.models.query.QuerySet’>
это все верно. QuerySet в django является представлением некоторого числа строк в БД, опционально отфильтрованных посредством запроса.
 User.objects.filter(e_mail=mail).values()
не запускает какие-либо запросы к БД, поэтому к нему можно применять еще фильтры или предавать в функции и в БД ничего не будет отправлено. А для выборки из БД необходимо осуществить перебор по QuerySet. (текст из документации)

Офлайн

#9 Ноя. 26, 2018 16:25:33

MEOW
Зарегистрирован: 2017-06-07
Сообщения: 59
Репутация: +  0  -
Профиль   Отправить e-mail  

Получение значения из объекта django

     mass = (User.objects.filter(e_mail=mail).values())
    mass = mass[0]
    mass = mass.values()
    print(list(mass)[1])
В итоге, чтобы получить значение у меня написано вот это. Я знаю, что это не правильно, но оно почему то работает. И всё таки непонятно, почему индекс 0 даёт преобразование из QuerySet в тип Dictionary

Офлайн

#10 Ноя. 26, 2018 18:10:31

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

Получение значения из объекта django

MEOW
И всё таки непонятно, почему индекс 0 даёт преобразование из QuerySet в тип Dictionary
Документацию нужно читать. Я же скинул ссылку на values(). Там в первых двух строках сказано, что возвращает словари, а не экземпляры модели, при использовании в качестве итерации

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version