Подтвердить что ты не робот

Разница между GET и FILTER в слое модели Django

В чем разница, пожалуйста, объясните их в простых условиях с примерами. Спасибо!

4b9b3361

Ответ 1

Я не знаю, действительно ли вам нужен пример, это довольно просто:

  • Если вы знаете, что один объект соответствует вашему запросу, используйте get. Он будет терпеть неудачу, если он более одного.
  • иначе используйте фильтр, который дает вам список объектов.

Точнее:

  • MyTable.objects.get(id=x).whatever предоставляет вам свойство whatever вашего объекта.

get() вызывает MultipleObjectsReturned, если найдено более одного объекта. Исключением MultipleObjectsReturned является атрибут модели класс.

get() вызывает исключение DoNotExist, если объект не найден для заданные параметры. Это исключение также является атрибутом класса модели.

  • MyTable.objects.filter(somecolumn=x) не только используется в качестве списка, но вы также можете запросить его снова, что-то вроде MyTable.objects.filter(somecolumn=x).order_by('date').
  • Причина в том, что это не список, а объект запроса. Вы можете перебирать его через список: for obj in MyTable.objects.filter(somecolumn=x)