Как я могу фильтровать, искать и сортировать поля из GenericForeignKey, которые имеют GenericRelation в Django?

У меня есть модель Django, AssetAssociation, которая содержит GenericForeignKey к различным моделям (Assets, User, Locations). Модель AssetAssociation выглядит следующим образом:

from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes.fields import GenericForeignKey


class AssetAssociation(models.Model):
    asset = models.ForeignKey(Assets, on_delete=models.CASCADE, related_name='asset_association')
    target_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
    target_id = models.UUIDField()
    target_object = GenericForeignKey('target_type', 'target_id')  # User / Asset / Location
    checkout_date = models.DateField(null=True, blank=True)
    expected_checkin_date = models.DateField(null=True, blank=True)
    checkin_date = models.DateField(null=True, blank=True)
    action_type = models.CharField(max_length=50, choices=ASSOCIATION_ACTION_TYPE_CHOICES)

А вот и связанные модели:

from django.contrib.contenttypes.fields import GenericRelation
class Assets(models.Model):
    name = models.CharField(max_length=100, blank=True, null=True)
    asset_tag = models.CharField(max_length=255)
    asset_associations = GenericRelation('AssetAssociation', content_type_field='target_type', object_id_field='target_id')

class User(models.Model):
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    asset_associations = GenericRelation('AssetAssociation', content_type_field='target_type', object_id_field='target_id')

class Locations(models.Model):
    name = models.CharField(max_length=100)
    asset_associations = GenericRelation('AssetAssociation', content_type_field='target_type', object_id_field='target_id')

Как я могу эффективно фильтровать и сортировать по этим полям, используя ORM Django? В частности, как написать функцию фильтрации, позволяющую фильтровать эти поля с помощью GenericRelation?

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