En Django les classes de modèle peuvent hériter les unes des autres comme
une classe ordinnaire:
[code]
class Personne(models.Model):
age = models.IntegerField()
nom = modelsCharField(max_length=120)
Class Femme(Personne):
enceinte = models.BooleanField(default=False)
Class Homme(Personne):
pass
[/code]
Dans ce cas toute instance de Femme aura aussi accès aux champs age et
nom, puisque tout le monde à un age et un nom, mais seule Femme aura
accès au champ enceinte puisque ce champ ne concerne pas (encore :-)) les
hommes.
Au niveau de la base de données, il y a 3 tables de créées: une table
pour Personne, une table pour Femme et une table pour Homme.
Quand vous faites:
[code]print Femme.objects.get(id=10).name[/code]
Django fait en faite silencieusement un JOIN entre la table de Femme et de
Personne, pour donner l'impression que Femme possède le champ name
directement.
Cette fonctionalité utilise automatiquement un champ OneToOneField, mais
avec parent_link = True (vous ne le voyez pas, Django le fait pour vous,
mais c'est faisable à la main). Si parent_link = True, on aura pas un lien
visible entre le deux modèles comme dans une relation d'égale à égale,
mais on aura une relation de parenté.
_______________________________________________
django mailing list
[email protected]
http://lists.afpy.org/mailman/listinfo/django