Python 在Django中,如何在多对多关系中向透视表添加更多列?

Python 在Django中,如何在多对多关系中向透视表添加更多列?,python,django,python-3.x,many-to-many,Python,Django,Python 3.x,Many To Many,我有两个由多对多关系连接的模型,在本例中是Policies和coverage,到目前为止,它工作得很好,但我想在pivot表中添加另一列,因为它不适用于任何建模表(我想添加一个名为“amount”的整数字段,这样我就可以存储我们在该特定保险中为该特定保险覆盖的金额) 我进行了迁移,数据透视表的创建没有问题,但我不知道如何向数据透视表添加另一个字段。您可以为此指定一个字段。事实上,如果您自己没有指定,Django将自动创建一个“隐式模型”。例如: class Policy(models.Model

我有两个由多对多关系连接的模型,在本例中是Policies和coverage,到目前为止,它工作得很好,但我想在pivot表中添加另一列,因为它不适用于任何建模表(我想添加一个名为“amount”的整数字段,这样我就可以存储我们在该特定保险中为该特定保险覆盖的金额)

我进行了迁移,数据透视表的创建没有问题,但我不知道如何向数据透视表添加另一个字段。您可以为此指定一个字段。事实上,如果您自己没有指定,Django将自动创建一个“隐式模型”。例如:

class Policy(models.Model):
    # ...

class Coverage(models.Model):
    # ...
    policies = models.ManyToManyField(Policy, through='CoveragePolicy')

class CoveragePolicy(models.Model):
    policy = models.ForeignKey(Policy, on_delete=models.CASCADE)
    coverage = models.ForeignKey(Coverage, on_delete=models.CASCADE)
    amount = models.IntegerField()
然后检查
金额
及其相关的
保险范围

但是,Django在从现有的直通模型迁移到另一个模型时会遇到问题,因此您可能必须删除迁移文件,并使用新模型创建一个新的迁移文件(并撤消旧模型数据库中的更改)

class Coverage(models.Model):
    """Coverage of the different types of policies"""
    name = models.CharField(max_length=55)
    policies = models.ManyToManyField(Policy)
    class Meta:
        db_table = 'coverages'

class Policy(models.Model):
    # ...

class Coverage(models.Model):
    # ...
    policies = models.ManyToManyField(Policy, through='CoveragePolicy')

class CoveragePolicy(models.Model):
    policy = models.ForeignKey(Policy, on_delete=models.CASCADE)
    coverage = models.ForeignKey(Coverage, on_delete=models.CASCADE)
    amount = models.IntegerField()
CoveragePolicy.objects.create(policy=p1, coverage=c2, amount=1)
p1.coveragepolicy_set.all()