def get_verbose_name(model, lookup):
"""Verbose name introspection of ORM models.
Parameters:
- model: the django model
- lookup: name of the field to find verbose name of.
Foreign key lookups is supported, ie. "othermodel__otherfield"
"""
if '__' not in lookup:
return model._meta.get_field(lookup).verbose_name
foreign_key, lookup = lookup.split('__', 1)
try:
foreign_model = model._meta.get_field(foreign_key).rel.to
return get_verbose_name(foreign_model, lookup)
except FieldDoesNotExist:
pass
related = model._meta.get_all_related_objects()
related += model._meta.get_all_related_many_to_many_objects()
for obj in related:
if obj.get_accessor_name() == foreign_key:
return get_verbose_name(obj.model, lookup)
raise FieldDoesNotExist
评论列表
文章目录