Как я могу фильтровать, искать и сортировать поля из 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
?