В чем разница, пожалуйста, объясните их в простых условиях с примерами. Спасибо!
Разница между GET и FILTER в слое модели Django
Ответ 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)