Dans le code principal.
Avec un ORM, on aura donc une équivalence classe <=> table SQL, et instance <=> ligne de la table.
>>>classA:>>>owner_type_id=CharField("module.class")# ou tout autre identifiant de classe ORM>>>owner_id=IntegerField()# clef primaire de l'objet en question>>>>>>defowner(self):>>>returnself.owner_type_id.get_by_id(self.owner_id)>>>owner_1=B()# instance quelconque de l'ORM>>>instance=A(owner_type_id=owner_1.__class__,owner_id=owner_1.id)>>>instance.owner==owner_1True
La classe B (ou C, D, ...) n'a à aucun moment besoin d'être connu du code de A, ce qui est bien pratique s'ils sont dans des plugins codés par d'autres entités.
[^] # Re: Performance
Posté par flan (site web personnel) . En réponse au journal Moi, expert C++, j'abandonne le C++. Évalué à 3.
Dans le code principal.
Avec un ORM, on aura donc une équivalence classe <=> table SQL, et instance <=> ligne de la table.
La classe B (ou C, D, ...) n'a à aucun moment besoin d'être connu du code de A, ce qui est bien pratique s'ils sont dans des plugins codés par d'autres entités.