Ich habe die folgende Beziehung:Wie neueste Objekte mit verschachtelter Abfrage in Django filtern
class Product(foo):
name = models.CharField()
class Maintenance(foo):
product = models.ForeignKey(Product, related_name="maintenances")
start = models.DateField()
end = models.DateField()
Ich möchte alle Produkte mit den neuesten filtern (nur der letzten) Objektpflege mit start
und end
Attributen in einem bestimmten Zeitraum.
Etwas wie folgt aus:
Product.objects.filter(maintenances__last__end__gte=today.now(), maintenances__last__end__lte=today.now()+datetime.timedelta(days=30))
Aber wie wähle ich den neuesten Wartungsdatensatz für jeden Eintrag, den ich habe, und stelle sicher, dass der Filter nur darauf basiert? Wenn ich 'last_' benutze, funktioniert es nicht. Es versucht, es als Attribut zu verwenden. –
Tut mir leid, ich habe es einfach falsch kopiert ... Wenn ich Ihre Frage richtig verstanden habe, sollte sie nur nach 'Ende' der' Maintenance' Objekte filtern. Verwenden Sie 'order_by' mit' distinct' und geben Sie nur das neueste Objekt für jede 'product_id' an. –
Das verdeutlicht. Vielen Dank. –