Фильтр по свойствам в 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