如何在ManyToMany表(Django)中添加列

Wei*_*Lin 27 python django many-to-many

从Django Book的例子中,我了解如果我创建如下模型:

from xxx import B

class A(models.Model):
    b = ManyToManyField(B)
Run Code Online (Sandbox Code Playgroud)

Django将在表A之外创建一个新表(A_B),它有三列:

  • ID
  • 援助
  • 出价

但是现在我想在表A_B中添加一个新列,因此如果我使用普通的SQL会很容易,但现在任何人都可以帮我怎么做?我在本书中找不到任何有用的信息.

dm0*_*514 69

使用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)
Run Code Online (Sandbox Code Playgroud)