Repository URL to install this package:
Version:
0.3.0a1 ▾
|
from django.db import models
from django.db.models.fields.related_descriptors import ManyToManyDescriptor, ReverseManyToOneDescriptor
def safe_get_fk_value(instance: models.Model, fk_field_name: str):
model_cls = instance.__class__
rel_model_cls = getattr(model_cls, fk_field_name).field.related_model
try:
return getattr(instance, fk_field_name)
except rel_model_cls.DoesNotExist:
return None
def get_queryset_from_related_field(model, field_name):
# https://github.com/demiroren-teknoloji/django-admin-autocomplete-list-filter/blob/main/djaa_list_filter/admin.py#L71
field_desc = getattr(model, field_name)
if isinstance(field_desc, ManyToManyDescriptor):
related_model = field_desc.rel.related_model if field_desc.reverse else field_desc.rel.model
elif isinstance(field_desc, ReverseManyToOneDescriptor):
related_model = field_desc.rel.related_model
else:
return field_desc.get_queryset()
return related_model.objects.get_queryset()