如何在Django的manymany through表中添加自定义字段



我有一个模型,它与另一个模型有许多关系。这将创建一个隐藏通过表,其中包含前两个表的两个外键字段。现在我想添加自定义字段,除了现有的两个外键字段在through表。

模型一:

class ModelOne(models.Model):
field_one = models.CharField(max_length=264)

模型二:

class ModelTwo(models.Model):
many_field = models.ManyToManyField(ModelOne, related_name='some_name')
field_one = models.CharField(max_length=264)

自动创建隐藏通过表:

class appname_modeltwo_modelone(models.Model):
model_one_id= models.ForeignKey(ModelOne)
model_two_id= models.ForeignKey(ModelTwo)
custom_field= models.CharField(max_length=264) # New Custom Field I want to add

我如何在这里添加新的自定义字段?

您可以使用through参数在多对多关系上添加额外的字段,以指向将充当中介的模型根据django doc

在你的例子中

class ModelOne(models.Model):
field_one = models.CharField(max_length=264)
class ModelTwo(models.Model):
many_field = models.ManyToManyField(ModelOne, related_name='some_name', through='IntermediateModel')
field_one = models.CharField(max_length=264)
class IntermediateModel(models.Model):
model_one = models.ForeignKey(ModelOne, on_delete=models.CASCADE)
model_two = models.ForeignKey(ModelTwo, on_delete=models.CASCADE)
custom_field = models.DateField()
custom_field_2 = models.CharField(max_length=64)