relations.py 666 B

12345678910111213141516171819202122
  1. from django.db.models import ManyToOneRel
  2. __all__ = (
  3. 'get_related_models',
  4. )
  5. def get_related_models(model, ordered=True):
  6. """
  7. Return a list of all models which have a ForeignKey to the given model and the name of the field. For example,
  8. `get_related_models(Tenant)` will return all models which have a ForeignKey relationship to Tenant.
  9. """
  10. related_models = [
  11. (field.related_model, field.remote_field.name)
  12. for field in model._meta.related_objects
  13. if type(field) is ManyToOneRel
  14. ]
  15. if ordered:
  16. return sorted(related_models, key=lambda x: x[0]._meta.verbose_name.lower())
  17. return related_models