Получить данные из одного столбца в базе данных django
У меня есть таблица в моей базе данных Users:
id|name|last_name|status|. --| ====| ---------|-------| 1|John|Black|active|. 2| Дрейк| Белл| отключен| 3| Пеп| Гвардиола| активен|. 4| Steven| Salt| active|
users_data = []
Я хочу получить все строки id и все строки статуса из этой базы данных и записать в пустой dict. Какой тип querry я должен использовать? filter, get или что-то другое? И что если я хочу получить один столбец, а не два?
Используйте метод .values():
>>> Users.objects.values('id', 'status')
[{'id': 1, 'status': 'actice'}, {}]
Результатом будет QuerySet
, который в основном ведет себя как список, затем вы можете сделать list(Users.objects.values('id', 'status'))
, чтобы получить объект списка.
users_data = list(Users.objects.values('id', 'status'))
Если вы хотите получить доступ к значениям определенных столбцов для всех экземпляров таблицы :
id_status_list = Users.objects.values_list('id', 'status')
Больше информации вы можете получить здесь, в официальной документации
Обратите внимание, что Django предоставляет ORM для облегчения запросов к базе данных ( Смотрите эту страницу для получения дополнительной информации о запросах) :
- Чтобы получить значения всех столбцов всех экземпляров пользователей из вашей таблицы Users :
users_list = Users.objects.all()
- Чтобы получить все значения столбцов определенных пользователей в таблице :
active_users_list = Users.objects.filter(status="active")
- Чтобы получить все значения столбцов определенного пользователя в таблице :
user_33 = Users.objects.get(pk=33)
Предположим, что имя вашей модели - User. Для этой части вопроса "А что если я хочу получить одну колонку, а не две?" вы можете использовать следующие коды:
User.objects.values('id')
User.objects.values('status')
yourmodelname.objects.values('id','status')
Этот код показывает вам базу данных в два столбца, включая id и статус
users_data = list(yourmodelname.objects.values('id','status'))
и с помощью этого кода вы можете показать свой результат в словаре