0

おそらく非常に基本的な質問があります。現在、コースの学生とその成績のデータベースを設定しています。私は現在、models.py に 2 つの主要なクラスを持っています: Student (名前、ID、電子メール アドレスなどを含む) と Course (ID、実行されている年、および評価情報を含む - たとえば、"Essay" "40% 「プレゼンテーション」「10%」「試験」「50%」)。もちろん、Student には ManyToMany フィールドがあるので、学生をコースに割り当てたり、その逆を行ったりできます。これらのことを追加および変更できなければなりません。

さて、明らかに、さまざまな課題(コースごとに異なります)の学生にマークを追加できるようにしたいと考えています。私はデータベース プログラミングの経験がほとんどないので、私のモデル内でこれを設定する方法についてアドバイスをいただければ幸いです。

ありがとう、トビ

4

3 に答える 3

1

おそらく、その方法は、割り当て用に別のクラスを用意することです。たとえば、このようなものです。

class Assignment(models.Model):
    ASSIGNMENT_TYPES = (
        ('essay', "Essay"),
        ...
    )
    ASSIGNMENT_GRADES = (
        ('a+', "A+"),
        ('a', "A"),
        ...
    )
    student = models.ForeignKey("Student")
    course = models.ForeignKey("Course")
    assignment_type = models.CharField(choices=ASSIGNMENT_TYPES, max_length=15, default='essay')
    progress = models.IntegerField()
    grade = models.CharField(choices=ASSIGNMENT_GRADES, max_length=3, default="a+")

このようにして、1 人の生徒と 1 つのコースに関連付けられた 1 つの課題が作成されます。1 つの課題に複数の学生がいる場合は、別のクラス (StudentGroup など) を追加してモデルに含めることで、比較的簡単に変更できます。

これが役立つことを願っています:)

于 2013-01-20T20:08:05.323 に答える
0

コースへの外部キーを持つ「評価」と呼ばれるモデルを作成します。さらに、「評価タイプ」というフィールド、「評価結果」というフィールド、「評価日」という最後のフィールドを作成します。次のようになります。

ASSESSMENTS = (('E','Essay'),('P','Presentation'))

class Assessment(models.MOdel):
    course = models.ForeignKey('Course')
    assessment = models.CharField(choices=ASESSMENTS)
    result = models.CharField(max_length=250)
    taken_on = models.DateField()
    overall_result = models.BooleanField()
    is_complete = models.BooleanField()

試験があるたびに、行われた評価ごとにこの表に記録を記入します。全体的な結果をフラグとして使用して、学生が合格または不合格であるかどうかを確認し、is_completeを使用して、コースで保留中の試験があるかどうかを確認できます。

于 2013-01-20T19:53:16.697 に答える
0

Django で記述された Web 上のコースを配信および管理するためのコンテンツ管理システムであるclasscommmodels.pyのファイルを確認する必要があります。

次のモデルがあります

  1. デパートメント
  2. コース
  3. インストラクター
  4. メンター
  5. 入学
  6. 割り当て
  7. DueDateOverride
  8. 提出
  9. 学年
  10. エクストラクレジット
  11. 情報
  12. リソース
  13. 発表

あなたの場合、そのような複雑な関係は必要ないかもしれませんが、models design.

このプロジェクトのホームページで詳細を確認できます。

于 2013-01-20T20:06:05.440 に答える