0

以下は、大学のデータベースとその評価です。以下、私が考えた方法です

  1. 各クラス (バッチ、例: 2009 年のバッチ) は部門に属します
  2. 各学科(例:薬学科)は大学に属しています

特にレーティングが気になるので。私はバッチを評価することを考えました。マネージャーまたはいくつかのモデルメソッドを使用して、部門または大学の合計評価を計算できます。

  1. 各クラスには評価があります

注: 1 つのクラスに対して、さまざまなユーザーによる多数の評価が存在する場合があります。したがって、総評価または平均評価はメソッドで行う必要があると思います。

これが私がこれまで行ってきた方法です

class Rating(models.Model):
    positive = models.FloatField(default=0)
    negative = models.FloatField(default=0)

class College(models.Model):
    name = models.CharField(max_length=200)
    website = models.URLField()

class Department(models.Model):
    name = models.CharField(max_length=200)
    college = models.ForeignKey(College)

class Batch(models.Model):
    passout_year = models.IntegerField(max_length=4)
    department = models.ForeignKey(Department)
    rating = models.ForeignKey(Rating)

このスキーマにはいくつかの問題があります。

  • 各バッチは単一の評価のみを持つことができます! ただし、多くのユーザーが署名した複数の評価を探しています (ただし、ユーザー モデルはまだ統合されていません)。

  • 各バッチは学科に属し、各学科はカレッジに属します。しかし、関係を別の方法で考えることもできます。

  • 各大学には多くの学科があり、各学科には多くのバッチがあります..

では、ForeignKey の代わりに ManyToManyField を使用する必要がありますか?

スキーマはどのように見えるべきですか?

私が考える最も重要な変更の 1 つは、

class Rating(models.Model):
    ..
    ..
    user = models.ForeignKey(django.contrib.auth.models.User)

class College(models.Model):
    ..
    ..
    departments = models.ManyToManyField(Department)

class Department(models.Model):
    ..
    college = models.ForeignKey(College)
    batches = models.ManyToManyField(Batch)

class Batch(models.Model):
    ..
    department = models.ForeignKey(Department)
    rating = models.ManyToMany(Rating)

これは正しいでしょうか?そうでない場合はどのように見えるか

ありがとう

4

1 に答える 1

0

ここに行きます:

from django.contrib.auth.models import User#First import user
lass Rating(models.Model):
    ..
    ..
    user = models.ForeignKey(User)

class College(models.Model):
    ..
    ..
    departments = models.ManyToManyField(Department)

class Department(models.Model):
    ..
    college = models.ForeignKey(College)
    batches = models.ManyToManyField(Batch)

class Batch(models.Model):
    ..
    department = models.ForeignKey(Department)
    rating = models.ManyToMany(Rating)

多対多の関係を作成すると、ブリッジ エンティティが Django によって自動的に作成されます。

于 2013-04-30T04:07:32.807 に答える