Фильтр по свойствам в Django Rest

У меня есть модель со свойством class, для вычисления поля, основанного на некотором внешнем ключе модели.

class Company(models.Model):
    field_id = models.AutoField(db_column='_id', primary_key = True)  
    ...

    @property
    def status(self):
        opportunities = list(self.opportunities.all())
    #logic 
    ...
    #
        return status

Я хочу фильтровать по этому новому полю. Я читал разные точки зрения, и некоторые из них говорят, что это невозможно непосредственно в django ORM. Я нашел одно решение, но не знаю, есть ли более эффективное.

Моим решением было бы переопределить queryset во viewset, если параметр находится в запросе. Фильтровать по списку и снова получать de queryset. Моя проблема в том, что мне нужно получить все объекты, вычислить поле статуса и выполнить итерацию.

def get_queryset(self):
    if 'status' in self.request.GET:
        status = self.request.GET['status']
        queryset = models.Company.objects.all()
        objects=[obj.field_id for obj in queryset if obj.status == status]
        queryset = models.Company.objects.filter(field_id__in=objects)

    else:
        queryset = models.Company.objects.all()

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