danielrvt
danielrvt

Reputation: 10926

Django - Query object by last element added to ManyToMany field

I have something like this:

class Car(models.Model):
    model = models.CharField(max_length=200)
    brand = models.CharField(max_length=100)
    status = models.ManyToMany(Status)

class Status(models.Model):
    name = models.CharField(max_length=40)
    date = models.DateTimeField('Status creation date')

How can I query all the cars where their last status (most recent) is REPAIRED for instance? Is this achievable in just one query?

Upvotes: 1

Views: 1815

Answers (1)

Moses Koledoye
Moses Koledoye

Reputation: 78564

from django.db.models import Max

cars = Car.objects.annotate(Max('status__date')).filter(status__name='REPAIRED').distinct()

You may read the Django examples for Many to Many relationships.

Upvotes: 1

Related Questions