Получение последнего объекта связанной таблицы ManytoMany в Django

У меня есть модель Django следующего вида:

class RFIDInventorySerials(models.Model):
    serial = models.CharField(max_length=50, blank=True, null=True, default=0)
    coordinate = models.CharField(max_length=100, blank=True, null=True, default=0)
    timestamp = models.DateTimeField(default=datetime.now)


class RFIDInventory(models.Model):
    reference_number = models.IntegerField(default=0)
    serials = models.ManyToManyField(RFIDInventorySerials)

и список serial, например :

s = ['a', 'b', 'c', 'd', 'e']

для каждого serial я хочу получить последний time_stamp. Как я могу это сделать?

Я сделал:

last_seen = []

        for i, v in df_hr1['Miss'].iteritems():
            last = RFIDInventorySerials.objects.filter(serial=v).last()
            print("last", last)
            last_seen.append(last.start)

Но если список станет длиннее, то цикл не будет решением этой проблемы

попробуйте что-то вроде этого;

serials_list = ['a', 'b', 'c']
# suppose you have a list of serials and want to filter last seen serials
required_result = RFIDInventorySerials.objects.filter(
    serial__in=serials_list
).order_by('-timestamp').distinct('serial')

У меня нет никакого механизма проверки, так что это может работать или не работать, но идея заключается в том, чтобы сначала упорядочить по метке времени и выбрать distinct serial

Вернуться на верх