Фильтр "Django" по последним добавленным связанным объектам

Я хочу фильтровать по последнему добавленному элементу связанной модели с полем отношения foreignkey. Я много пробовал, но не могу добиться результата, Мои модели выглядят следующим образом

class Status(models.Model):
    
    member= models.ForeignKey(Member, on_delete=models.CASCADE, related_name='member_status')
    name = models.CharField(max_length=2, choices=("new","old","continue")
    status_created_at = models.DateTimeField(auto_now_add=True)


class Member(models.Model):
    messageContent= models.TextField(null=True, blank=True)

мой набор запросов выглядит следующим образом

{
    "id": 1,
    "member_status": [
        {
            "id": 8,
            "name": "new",
            "notes": "",
            "status_created_at": "2021-01-01T17:55:21.523162Z",
            "member": 1
        },
        {
            "id": 9,
            "name": "old",
            "notes": "",
            "status_created_at": "2022-08-09T17:56:06.995086Z",
            "order": 1
        }
    ],
    "messageContent": "example",
},
            "id": 1,
    "member_status": [
        {
            "id": 11,
            "name": "new",
            "notes": "",
            "status_created_at": "2021-01-01T17:55:21.523162Z",
            "member": 1
        },
        {
            "id": 12,
            "name": "continue",
            "notes": "",
            "status_created_at": "2022-08-08T17:56:06.995086Z",
            "order": 1
        }
    ],
    "messageContent": "example content",
}

для фильтрации с помощью FilterSet

def filter_queryset(self, queryset): queryset= Member.objects.filter(member_status__name=self.request.query_params.get('memberStatus')) return super().filter_queryset(queryset)

Я хочу фильтровать по статусу последнего члена, но при фильтровании по "new" все объекты попадают в кверисет. Я хочу получить членов, отфильтрованных по последнему статусу.

Помогите мне, пожалуйста?

Я не могу найти точный ответ в Интернете, но этого мне сейчас достаточно. Я добавляю это решение

def filter_queryset(self, queryset):
    queryset = Status.objects.filter(id__in=Status.objects.values("member").annotate(max_id=Max('id')).values("max_id"),name=self.request.query_params.get('status'))
    queryset = Member.objects.filter(member_status__in=queryset)
    return super().filter_queryset(queryset)

Этот код скрипта очень сложный, поэтому я думаю, может кто-нибудь поделиться четким решением

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