如何在Django中创建涉及两个字段的ManyToManyField关系?

时间:2012-01-06 19:51:05

标签: python django

我的简化模型:

class Weapon(models.Model):
    name = models.CharField(max_length=100)

class City(models.Model):
    name = models.CharField(max_length=100)

我想要它,以便我可以定义一个不同的武器字段价格,它将与每个城市不同。我尝试将以下内容添加到Weapon类中:

price = models.ManyToManyFields('City')

..但它只给我一个列表,列出了哪种答案:“这种武器可以在哪些城市使用?”而不是“每个城市这种武器的价格有什么不同?”

3 个答案:

答案 0 :(得分:2)

您可以在ManyToMany字段中使用intermediary model

class Weapon(models.Model):
    name = models.CharField(max_length=100)
    cities = models.ManyToManyField('City', through='Vendor')

class City(models.Model):
    name = models.CharField(max_length=100)

class Vendor(models.Model):
    city = models.ForeignKey('City')
    weapon = models.ForeignKey('Weapon')
    price = models.DecimalField(max_digits=6, decimal_places=2)

答案 1 :(得分:1)

答案 2 :(得分:0)

https://docs.djangoproject.com/en/dev/topics/db/models/#extra-fields-on-many-to-many-relationships

您可以使用每个其他模型的外键显式创建多对多表。

我认为这就是你的意思