В чем разница между ними?получать и.fetch (1)
Я написал приложение, и часть его использует синтаксический анализатор URL для получения определенных данных способом типа ReST. Так что если вы положите именем /foo/бар в путь она найдет все элементы строки и если вы поставили именем /foo вернет все элементы с Foo
Итак, мое приложение имеет запрос типа
data = Paths.all().filter('path =', self.request.path).get()
Который работает блестяще. Теперь я хочу отправить это в пользовательский интерфейс, используя шаблоны
{% для базы данных %}
{{datum.название }}
{{ данная величина.содержание }} </div>
{% endfor %}
Когда я делаю это, я получаю данные не повторяющейся ошибки. Поэтому я обновил Django до {% for datum in data.all %}
, который теперь, похоже, вытягивает больше данных, чем я ему каким-то образом давал. Он показывает все данные в хранилище данных, которое не является идеальным. Поэтому я удалил его .все из Django и изменил запрос хранилища данных на
data = Paths.all().filter('path =', self.request.path).fetch(1)
Который теперь работает так, как я и предполагал. В документации сказано
БД.функция get () извлекает сущность из хранилища данных для ключа (или список из Ключи).
Итак, мой вопрос заключается в том, почему я могу перебирать запрос, когда он возвращается с fetch()
, но не может с get()
. Где мое понимание пошло не так?
2 ответа:
Вы ищете в документах неправильный get () - вам нужен метод get() для объекта запроса. В двух словах .функция fetch () всегда возвращает список while .get() возвращает первый результат или нет, если результатов нет.