2014-01-12 2 views
3

Я имею следующий вопрос (Кстати, я думаю, что я не имел эту проблему за день до этого):Джанго модель метод последней()

>>> rule = Rule.objects.get(user=user) 
>>> rule.id 
1 
>>> rule = Rule.objects.get(user=user).latest('id') 

AttributeError: 'Rule' object has no attribute 'latest' 

Почему я получаю ошибку?

ответ

6

Функция Get() образцового менеджера возвращает экземпляр самого объекта.

Последняя функция(), которую вы указываете, относится к классу QuerySet. Вызов .filter(), .all(), .exclude() и т. Д., Все возвращают набор запросов.

Что вы, вероятно, ищете, чтобы первый фильтр для конкретного пользователя, а затем получить последний результат, «ид»:

rule = Rule.objects.filter(user=user).latest('id') 

Смотрите здесь для Документов на querying models

1

latest method принадлежит к QuerySet, а не модели.

Заменить следующие строки:

rule = Rule.objects.get(user=user).latest('id') 

с:

rule = Rule.objects.filter(user=user).latest('id') 
+0

Спасибо, снова ! Мне просто интересно, почему метод get имел проблему? – jazzblue

+0

@GregoryR, потому что метод '' get' (https://docs.djangoproject.com/en/1.6/ref/models/querysets/#get) возвращает экземпляр модели, а не объект QuerySet. (в отличие от метода 'filter'). – falsetru

Смежные вопросы