2010-06-23 12 views
2

Dans mon projet django j'ai 2 variations d'utilisateurs. Une sous classe classe User de django.auth et la seconde utilise presque les mêmes champs mais n'est pas un vrai utilisateur (donc elle n'hérite pas de l'utilisateur). Existe-t-il un moyen de créer une classe FieldUser (qui stocke des champs uniquement) et pour la sous-classe RealUser à la fois FieldUser et User, mais pour la sous-classe FakeUser seulement FieldUser?Python/django hérite de 2 classes

Répondre

4

sûr, j'ai utilisé l'héritage multiple dans les modèles django, ça fonctionne très bien.

sonne comme vous voulez configurer une classe abstraite pour FieldUser:

class FieldUser(models.Model): 
    field1 = models.IntegerField() 
    field2 = models.CharField() #etc 
    class Meta: 
     abstract=True #abstract class does not create a db table 

class RealUser(FieldUser, auth.User): 
    pass #abstract nature is not inherited, will create its own table to go with the user table 

class FakeUser(FieldUser): 
    pass #again, will create its own table 
+0

superbe! C'est ce que j'essayais d'accomplir! – crivateos

+0

et quelques docs avec cela: https://docs.djangoproject.com/fr/1.8/topics/db/models/#multiple-inheritance –