46

Django Book の例から、次のようにモデルを作成するとわかります。

from xxx import B

class A(models.Model):
    b = ManyToManyField(B)

Django は、3 つの列を持つテーブル A を超えて新しいテーブル (A_B) を作成します。

  • ID
  • 援助
  • 入札

しかし今、テーブル A_B に新しい列を追加したいので、通常の SQL を使用すれば非常に簡単ですが、誰でもその方法を教えてもらえますか? この本には有益な情報が見つかりません。

4

3 に答える 3

105

djangoを使うのもとても簡単です!through独自の多対多の中間テーブルを定義するために使用できます

ドキュメントには、問題に対処する例が記載されています。

Extra fields on many-to-many relationships

class Person(models.Model):
    name = models.CharField(max_length=128)

    def __unicode__(self):
        return self.name

class Group(models.Model):
    name = models.CharField(max_length=128)
    members = models.ManyToManyField(Person, through='Membership')

    def __unicode__(self):
        return self.name

class Membership(models.Model):
    person = models.ForeignKey(Person, on_delete=models.CASCADE)
    group = models.ForeignKey(Group, on_delete=models.CASCADE)
    date_joined = models.DateField()
    invite_reason = models.CharField(max_length=64)
于 2012-09-24T14:36:09.290 に答える