Найти - Пользователи
Полная версия: Получение значения из объекта django
Начало » Django » Получение значения из объекта django
1 2
MEOW
Приветствую. Поступил небольшой вопрос при работе с базой данных в 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? Не могу понять. Спасибо за помощь
Romissevd
все верно. ты получаешь QuerySet объект. Чтобы получить результат выполни к итерацию
 mail = request.POST.get('e_mail_log', False)
for x in User.objects.filter(e_mail=mail):
    print(x)
MEOW
Не работает. Цикл работает один раз и выводит
 qwerty, 123@mail.com, 1234
Как взять значения то из этого всего?
MEOW
Не работает. Цикл работает один раз и выводит
 qwerty, 123@mail.com, 1234
Как взять значения то из этого всего?
Romissevd
MEOW
Цикл работает один раз и выводит
Так и будет тут подробнее про кэш.
Загони в кортеж и обращайся по индексу. Или попробуй метод values()
MEOW
Пробую метод values и получаю:
 <QuerySet [{'id': 21, 'school_name': 'qwerty', 'user_name': 'qwerty', 'e_mail': '123@mail.ru', 'password': '1234'}]>
Но я всё равно не могу вытащить оттуда ничего.
MEOW
Почему когда я принтую type(mass), где mass это
 User.objects.filter(e_mail=mail).values()
то выводит: <class ‘django.db.models.query.QuerySet’>, а когда принтую type(mass)с индексом 0, то говорит, что тип словарь. Как это работает?
Romissevd
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. (текст из документации)
MEOW
     mass = (User.objects.filter(e_mail=mail).values())
    mass = mass[0]
    mass = mass.values()
    print(list(mass)[1])
В итоге, чтобы получить значение у меня написано вот это. Я знаю, что это не правильно, но оно почему то работает. И всё таки непонятно, почему индекс 0 даёт преобразование из QuerySet в тип Dictionary
Romissevd
MEOW
И всё таки непонятно, почему индекс 0 даёт преобразование из QuerySet в тип Dictionary
Документацию нужно читать. Я же скинул ссылку на values(). Там в первых двух строках сказано, что возвращает словари, а не экземпляры модели, при использовании в качестве итерации
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB