Возврат исходных данных
Следующий метод позволяет выполнить запрос, но не возвращает модель ormar, а словарь или список кортежей.
-
values(fields = None, exclude_through = False) -> List[Dict] -
values_list(fields = None, exclude_through = False, flatten = False) -> List -
Агент наборов запросов
QuerysetProxy.values(fields = None, exclude_through = False)МетодологииQuerysetProxy.values_list(fields = None, exclude_through= False, flatten = False)Методология
!!!danger Обратите внимание, что значения и значения_list пропускают анализ результатов в модели ormar и, следовательно, не пропускают проверку результатов!
!!!предупреждает, что каждая запись в списке результатов является отражением строки результатов запроса «один к один». Поскольку строки не будут интерпретироваться, если у родительской строки несколько связанных строк, в результатах будут появляться повторяющиеся значения столбцов.
Ценности
values(fields: Union[List, str, Set, Dict] = None, exclude_through: bool = False) -> List[Dict]
Возвращает список словарей, представляющих значения столбцов базы данных.
Параметр fields позволяет выбрать подгруппу полей, которая принимает тот же набор параметров, что и метод fields ().
Обратите внимание на то, что передача поля values (fields) является ярлыком вызова fields (fields). values ().
!!!tip Для получения дополнительной информации о том, что можно передать в поле, и о том, как выбрать поля вложенной модели, см. раздел Выбор документа столбца
Можно ограничить количество строк, указав условия в filter () и except (), но обратите внимание, что, даже если только одна строка (или ее отсутствие!) соответствует вашим критериям, вы возвратите список в ответ.
Примеры:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
Доступ к почтовым моделям:
1 2 3 4 5 6 | |
Для одновременного выбора связанной модели используйте команды select_lated или prefetch_lated.
Обратите внимание на то, что столбцы вложенных моделей имеют префикс для полного пути связей между автономными моделями (моделями, используемыми в запросе).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
Выбор пользователей с ролью
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
!!!note Обратите внимание, что роль связана с пользователем, так что по умолчанию можно получить столбцы модели.
Выберите связанные поля и поля вместе, чтобы выбрать только три поля.
Обратите внимание на то, что мы также исключили определение из модели, так как в соответствии с определением каждая модель, включенная в соединение, но не имеющая ссылок в поле, считается полностью выбранной (включая все поля).
!!!note Обратите внимание, что в отличие от других подходов к набору запросов, которые используются здесь, можно исключить промежуточные модели, но оставить последние столбцы, что не имеет смысла при анализе исходных данных в модели.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | |
Если в запросе содержится несколько моделей ManyToMany, каждую модель необходимо исключить вручную.
Чтобы избежать этой нагрузки, ormar предоставляет параметр except_through =False. Если установить для этого флажка значение True, все модели будут полностью исключены.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Список значений
values_list(fields: Union[List, str, Set, Dict] = None, flatten: bool = False, exclude_through: bool = False) -> List
Возвращает список кортежей, представляющих значения столбцов из базы данных.
Параметр fields позволяет выбрать подгруппу полей, которая принимает тот же набор параметров, что и метод fields().
Обратите внимание на то, что передача поля values_list (fields) является ярлыком вызова fields(fields).values_list ().
!!!tip Для получения дополнительной информации о том, что можно передать в поле, и о том, как выбрать поля вложенной модели, см. раздел Выбор документа столбца
Если выбрать только один столбец/поле, можно передать flatten=True, что возвращает список значений, а не кортеж элементов.
Предупреждение!!!: Если выбрано несколько полей (или их нет, то все), настройка flatten=True приведет к появлению исключения QueryDefinitionError.
Можно ограничить количество строк, указав условия в filter() и except(), но обратите внимание, что, даже если только одна строка (или ее отсутствие!) соответствует вашим критериям, вы возвратите список в ответ.
Примеры:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
Доступ к почтовым моделям:
1 2 3 4 5 6 7 | |
Для одновременного выбора связанной модели используйте команды select_lated или prefetch_lated.
Давайте усложним отношения и изменим модель категорий, о которой говорилось выше, для ссылки на пользовательскую модель.
1 2 3 4 5 6 7 8 | |
Теперь создайте образцы данных с пользовательскими ссылками.
1 2 3 4 5 6 | |
Выберите связанные поля и поля вместе, чтобы выбрать только три поля.
Обратите внимание на то, что мы также исключили определение из модели, так как в соответствии с определением каждая модель, включенная в соединение, но не имеющая ссылок в поле, считается полностью выбранной (включая все поля).
!!!note Обратите внимание, что в отличие от других подходов к набору запросов, которые используются здесь, можно исключить промежуточные модели, но оставить последние столбцы, что не имеет смысла при анализе исходных данных в модели.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Если в запросе содержится несколько моделей ManyToMany, каждую модель необходимо исключить вручную.
Чтобы избежать этой нагрузки, ormar предоставляет параметр except_through =False. Если установить для этого флажка значение True, все модели будут полностью исключены.
1 2 3 4 5 6 7 8 | |
Используйте flatten для получения списка значений.
1 2 3 4 5 6 | |
Метод QuerysetProxy
При прямом доступе к соответствующему полю ManyToMany и ReverseForeignKey, возвращайтесь к списку связанных моделей.
Но в то же время он предоставляет подмножество API QuerySet, поэтому вы можете фильтровать, создавать и выбирать связанные модели непосредственно из родительской модели.
!!!предупреждает, что, поскольку использование values и values_list пропускает анализ и проверку модели, эти два метода не очищают загруженную в данный момент связанную модель и не перезаписывают загруженную модель своими результатами вызова!
Ценности
То же самое, что и функция значений выше, но позволяет получать связанные объекты с другого конца отношения.
Tip
Список значений
То же самое, что и функция value_list выше, но позволяет запрашивать или создавать связанные объекты с другого конца отношения.
Tip