0

学部・学科の2モデルあり

class College(models.Model):
    name = models.CharField(max_length=200)
    uid = models.CharField(max_length=10, unique=True)
    website = models.URLField()

class Dept(models.Model):
    name = models.CharField(max_length=200)
    uid = models.CharField(max_length=10)
    college = models.ForeignKey(College)

ここでは、2 つの方法で関係を説明できます...

  1. 各大学には多くの学科があります
  2. 各学科は大学に所属しています(上記のモデルは所属しています)

2ndデザイン使用時の不具合

大学の各学科に重複した名前を付けることはできません..つまり、大学の複数の学科を 1 つの名前で指定することはできません..どうすればよいですか?

適切なデータベース設計を採用しましたか? そうでない場合、それを行う方法は?

4

1 に答える 1

1

多くの大学に分割された学科が存在しない場合、外部キーを使用したモデルは正しいように見えます。学科を多くの大学に分割できる場合は、"through" 引数を使用して ManyToMany を設定する必要があります。トラフ モデルでは、次のように "unique_together" を追加します。

FK の場合、制約を追加するには、次のように Dept を変更する必要があります。

class Dept(models.Model):
    name = models.CharField(max_length=200)
    uid = models.CharField(max_length=10)
    college = models.ForeignKey(College)

    class Meta:
        unique_together = (('name', 'college'),)
于 2013-04-11T10:07:39.023 に答える