Django-fr

Forum

  • Accueil
  • » Django-fr
  • » Héritage de Model, unique fields et autocomplétion

#1 20-10-2013 12:11:39

nicolas08
Membre
Inscription : 25-04-2013
Messages : 6

Héritage de Model, unique fields et autocomplétion

Bonjour,
Je suis en train de développer un site intranet pour une association. Nous avons de mutiples contacts différents (adhérents, bénévoles...) qui peuvent être cumulables. Par exemple un adhérent peut être bénévole ou pas. J'ai donc pensé à créer un modèle Contact comme modèle de base, Adhérent, Benevole héritant de celle-ci.
Afin d'éviter les doublons j'ai créé ceci  dans le modèle Contact:

class Meta:
        verbose_name = u"contact"
        verbose_name_plural = u"contacts"
        ordering = ['prenom', 'nom']
        unique_together =('nom',  'prenom')

Ce code fonctionne bien pour les modèles hérités, et lève une erreur en cas de doublon dans les contacts en ajoutant un adhérent ou un bénévole. Hors, le but du jeu serait de remplir les champs du contact en cas de doublon.

Devrais-je revoir mes modèles Adhérent et Benevole afin d'y inclure une clé étrangère vers Contact plutôt qu'utiliser l'héritage ?
Ou peut-être existe-t-il une astuce en gardant mes modèles hérités de Contact ?

J'espère avoir été assez clair, la formulation de mes idées n'étant pas mon point fort :-/

Merci à vous et bon dimanche

Hors ligne

#2 15-11-2013 04:26:26

artscoop
Membre
Inscription : 15-11-2013
Messages : 4

Re : Héritage de Model, unique fields et autocomplétion

Bonjour Nicolas,
Il faut bien penser ton modèle. Ce cas est simple à mon sens. Le modèle Contact est très bien, et la sous-classe de Métadonnées est bien écrite.
Si un contact peut être à la fois Adhérent ou Bénévole (mais qu'il reste un contact !), alors nous avons un modèle en commun, qui peut être utilisé pour les deux cas.
Nous conservons donc le modèle Contact, et allons nous passer de créer des modèles dérivés du typr Bénévole, Adhérent, Trésorier etc.
Le plus simple est de créer un modèle de référence, que l'on va nommer Statut (par exemple), et qui contient autant d'enregistrements que de statuts possibles dans l'association.
il suffit ensuite d'ajouter au modèle Contact un champ "statuses" (ou "statuts") qui sera un ManyToManyField vers le modèle Statut.
Ainsi un contact pourra avoir le nombre de statuts qu'ils souhaite, voire aucun statut.

Hors ligne

  • Accueil
  • » Django-fr
  • » Héritage de Model, unique fields et autocomplétion

Pied de page des forums