J'ai un modèle avec une relation générique:Comment obtenir l'app d'un modèle Django?
TrackedItem --- genericrelation ---> any model
Je voudrais être en mesure d'obtenir génériquement, à partir du modèle initial, l'élément suivi.
Je devrais pouvoir le faire sur n'importe quel modèle sans le modifier.
Pour ce faire, je dois obtenir le type de contenu et l'identifiant de l'objet. Obtenir l'ID de l'objet est facile car j'ai l'instance du modèle, mais obtenir le type de contenu n'est pas: ContentType.object.filter nécessite le modèle (qui est juste content_object.__class__.__name__
) et l'app_label.
Je n'ai aucune idée de comment obtenir de manière fiable l'application dans laquelle un modèle est.
Pour l'instant, je fais app = content_object.__module__.split(".")[0]
, mais cela ne fonctionne pas avec les applications django contrib.
Ceci est une meilleure solution que l'utilisation de _meta. – Wogan
Est-ce? Cela ne frappe-t-il pas la base de données? – meshy
@meshy yes mais django ContentType utilise un cache sur son gestionnaire pour qu'il ne demande qu'une seule requête par modèle. – dalore