Vous n'êtes pas identifié(e).
bonjour, je suis un novice autant avec python que django ^^
je crois que je commence un peu a comprendre les fondamentaux.
Je parcours donc un peu plus précisemment la documentation en fonction de mes besoins qui sont pour le moment ceux d'un débutant.
Dans la page sur les Fields et les relationship je m'interesse à OneToOneField
ce type de champ bénéficie d'un argument supplémentaire par rapport aux autres champs indiquant une relation entre plusieurs modèles.
=> OneToOneField.parent_link
la doc en anglais indique à ce sujet https://docs.djangoproject.com/en/1.4/r … arent_link :
When True and used in a model which inherits from another (concrete) model, indicates that this field should be used as the link back to the parent class, rather than the extra OneToOneField which would normally be implicitly created by subclassing.
je ne suis pas bien sûr de comprendre la subtibilité
quelqu'un a un avis sur la question ?
merci
Hors ligne
En Django les classes de modèle peuvent hériter les unes des autres comme une classe ordinnaire:
class Personne(models.Model):
age = models.IntegerField()
nom = modelsCharField(max_length=120)
Class Femme(Personne):
enceinte = models.BooleanField(default=False)
Class Homme(Personne):
pass
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:
print Femme.objects.get(id=10).name
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é.
Hors ligne