Return all models that have a direct relationship to the given model.
(m)
| 32 | |
| 33 | |
| 34 | def _get_related_models(m): |
| 35 | """Return all models that have a direct relationship to the given model.""" |
| 36 | related_models = [ |
| 37 | subclass |
| 38 | for subclass in m.__subclasses__() |
| 39 | if issubclass(subclass, models.Model) |
| 40 | ] |
| 41 | related_fields_models = set() |
| 42 | for f in m._meta.get_fields(include_parents=True, include_hidden=True): |
| 43 | if ( |
| 44 | f.is_relation |
| 45 | and f.related_model is not None |
| 46 | and not isinstance(f.related_model, str) |
| 47 | ): |
| 48 | related_fields_models.add(f.model) |
| 49 | related_models.append(f.related_model) |
| 50 | # Reverse accessors of foreign keys to proxy models are attached to their |
| 51 | # concrete proxied model. |
| 52 | opts = m._meta |
| 53 | if opts.proxy and m in related_fields_models: |
| 54 | related_models.append(opts.concrete_model) |
| 55 | return related_models |
| 56 | |
| 57 | |
| 58 | def get_related_models_tuples(model): |
no test coverage detected