Как я могу фильтровать модели Django на основе результата лямбда-выражения?

#django #django-models #filter

#django #django-models #Фильтр

Вопрос:

Я знаю, что мог бы использовать собственный набор функциональных инструментов Python, но я хотел бы, чтобы в Django был способ для этого.

У меня есть эта модель:

 class AssetGeoFenceEvent(models.Model):
#...
#assets, for which this event is assigned
asset = models.ForeignKey(Asset)
#...
  

и указанная Asset модель похожа:

 class Asset(models.Model):
#...
client = models.ForeignKey(Client)
#....
  

Я думал, что смогу сделать:

 #get all the registered events for this client
events = AssetGeoFenceEvent.objects.filter(asset.client == client)
  

но это приводит к ошибке :

ключевое слово не может быть выражением

Пробовал это, но это не удается:

 #get all the registered events for this client
events = AssetGeoFenceEvent.objects.filter(lambda a: a.client == client)
  

Что выдает мне ошибку

Объект ‘function’ не может быть повторен

Итак, как я могу выполнить это с помощью Django?

Ответ №1:

Вы делаете это неправильно.

 events = AssetGeoFenceEvent.objects.filter(asset__client=client)