jazzblue
jazzblue

Reputation: 2437

Django model latest() method

I am having the following issue (BTW I think I had not had this problem the day before):

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

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

Why am I getting the error?

Upvotes: 6

Views: 8722

Answers (2)

Dwight Gunning
Dwight Gunning

Reputation: 2525

The get() function of the Model Manager returns an instance of the Model itself.

The latest() function you mention belongs to the QuerySet class. Calling .filter(), .all(), .exclude() etc, all return a QuerySet.

What you're likely looking for is to first filter for the specific user, then get the latest result by 'id':

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

See here for the docs on querying models

Upvotes: 11

falsetru
falsetru

Reputation: 368904

latest method belongs to QuerySet, not model.

Replace following line:

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

with:

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

Upvotes: 3

Related Questions