Получить данные из одного столбца в базе данных 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'))

и с помощью этого кода вы можете показать свой результат в словаре

Вернуться на верх