Quand j'ai une classe de modèle django donné comme ceci: par exempleComment obtenir un objet sous-classé d'un modèle de django
class SomeClass(BaseClass):
other_field = models.CharField(max_length = 80)
class BaseClass(models.Model):
some_field = models.CharField(max_length = 80)
...
et certaines sous-classes de celui-ci,
Je sais que je peut obtenir l'objet dérivé en appelant
base = BaseClass.objects.get(pk=3)
my_obj= base.someclass
maintenant, le problème se pose que j'ai plusieurs sous-classes, et tout ce que j'ai est un n instance de la classe de base. Comment puis-je accéder à l'objet sous-classé sans le savoir à l'avance?
L'idée est de charger une vue correspondante et de faire cela. Les fonctionnalités de mon projet n'ont qu'un nombre limité d'actions par défaut pour ces modèles, comme la vue, l'édition, la suppression, etc. Ce que je ne veux pas, c'est exposer le type de l'objet donné via URL.
Voilà comment je l'ai manipulé dans le Attention, le champ derived_type ne doit être défini que lors de la sauvegarde initiale (lorsque vous savez que vous enregistrez le sous-type), et ne sera jamais modifié par la suite.Sinon, il est facile de charger l'instance en tant qu'instance de BaseClass, enregistrer - et votre champ derived_type pense maintenant qu'il s'agit d'une BaseClass. –
De nos jours, il y a une manière intégrée, regardez ma réponse .... –