I'm trying to build an e-learning platform
I have *users (Utilisateur) *who can take several *courses* ,each course 
have several *modules* and a module can be in several courses
a user can be a student or teacher or admin, a student is "managed" by a 
teacher or several and a teacher can also  be managed by a teacher (if he 
is a researcher) ,teachers are managed by admins

this is my conception :

<https://lh5.googleusercontent.com/-0IKqEtcoluA/Uhs2f2Mqh9I/AAAAAAAAACg/chYFCfSIIeM/s1600/elearning_model.png>

I'm not familiar with many_to_many and through concept, please correct me
 this is my django models :

class Utilisateur(models.Model):
    user       = models.OneToOneField(User)
    role       = models.CharField(choices=ROLES,blank=False,max_length=50)
    managed_by = models.ManyToManyField('self', 
through='UtilisateurRelationship', symmetrical=False, blank=True)
        
            
class UtilisateurRelationship(models.Model):
    managed = models.ForeignKey(Utilisateur)
    manager = models.ForeignKey(Utilisateur)
    
    
               
class Course(models.Model):
    titre  = models.CharField(blank=False,max_length=100)
    
class ModuleCourse (models.Model):
    module = models.ForeignKey(Module)
    course = models.ForeignKey(Course)
    order  = models.IntegerField(blank=False)   
        
class Module(models.Model):
    titre     = models.CharField(blank=False,max_length=100)
    belong_to = models.ManyToManyField(Course, through='ModuleCourse')
    
class UtilisateurModule (models.Model):
    user   = models.ForeignKey(Utilisateur)
    module = models.ForeignKey(Module)
    score  = models.IntegerField(blank=False)
    
  

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to