1

eラーニングプラットフォームを構築しようとしています

複数のコースを受講できるユーザー(Utilisateur)がいます。各コースには複数のモジュールがあり、モジュールは複数のコースに含めることができます

ユーザーは学生、教師、または管理者になることができ、学生は教師または複数の教師によって「管理」され、教師は教師によって管理されることもできます(研究者の場合)、教師は管理者によって管理されます

many_to_many の概念に慣れていないので、訂正してください

これは私のジャンゴモデルです:

class Utilisateur(models.Model):
    user       = models.OneToOneField(User)
    role       = models.CharField(choices=ROLES,blank=False,max_length=50)
    managed_by = models.ManyToManyField('self', 
                                         related_name='managers',
                                         symmetrical=False, 
                                         blank=True)
    course     = models.ManyToManyField('Course')   #can I do it? (question 2)
    module     = models.ManyToManyField('Module', through='UtilisateurModule')


class Course(models.Model):
    titre  = models.CharField(blank=False,max_length=100)

class Module(models.Model):
    titre     = models.CharField(blank=False,max_length=100)
    course    = models.ManyToManyField(Course, through='ModuleCourse')

class ModuleCourse (models.Model):
    module = models.ForeignKey(Module)
    course = models.ForeignKey(Course)
    order  = models.IntegerField(blank=False)   


class UtilisateurModule (models.Model):
    user   = models.ForeignKey(Utilisateur)
    module = models.ForeignKey(Module)
    score  = models.IntegerField(blank=False)

私の質問:

1 . モジュールごとにユーザーのスコアを取得し、コースごとに表示する方法は次のとおりです。

-Course A

 *Module 1 

   score : 5

 *module 2 :

  score : 8

 ...

-Course B

 *Module 1:

   score 7

 ....

2 . モジュールが複数のコースに属する可能性があることを知っているモジュールに影響を与えるだけでは、どのコースがどのユーザーに影響するかがわからないため、コースとユーザーの間に多対多の関係を追加する必要がありますcourse = models.ManyToManyField('Course')

4

2 に答える 2

0

解決した

1-これは私がそれを行うことができた方法です:

    course = Utilisateur.objects.get(user=current_user).course.all() 

    course_sets = []
    for p in course:
        modules = Module.objects.filter(course__id=p.pk).order_by('modulecourse__order') 
        modules_sets = []
        for m in modules:                
            score = UtilisateurModule.objects.get(module=m,utilisateur=current_user)
            modules_sets.append((m, score))
        course_sets.append((p, modules_sets)) 

2-追加course = models.ManyToManyField('Course')しましたUtilisateur

次に、コースがユーザーに影響を受けるたびに、そのコースのモジュールも同じユーザーに影響を受けるという手動の検証を追加しましたUtilisateurModule

于 2013-09-11T16:35:18.363 に答える