Sprich my_instanceist vom Modell MyModel.
Ich suche nach einem guten Weg:
my_model = get_model_for_instance(my_instance)
Ich habe keinen wirklich direkten Weg gefunden, dies zu tun. Bisher habe ich mir Folgendes ausgedacht:
from django.db.models import get_model
my_model = get_model(my_instance._meta.app_label, my_instance.__class__.__name__)
Ist das akzeptabel? Ist es überhaupt ein sicherer, bewährter Weg, dies zu tun?
Es gibt auch _meta.object_namedas, was das gleiche zu liefern scheint wie __class__.__name__. Macht es? Ist besser oder schlechter? Wenn ja warum?
Woher weiß ich auch, dass ich das richtige Modell erhalte, wenn das App-Label im Rahmen des Projekts mehrmals vorkommt, z. B. 'auth' von 'django.contrib.auth', und dass es auch 'myproject.auth' gibt?
Würde ein solcher Fall get_modelunzuverlässig machen ?
Vielen Dank für Hinweise / Hinweise und Erfahrungsaustausch!
__class__unbedingt die Klasse für die Instanz sein. Es gibt keine mögliche Mehrdeutigkeit. So funktioniert Python. Was fragst du?