Как мне создать отношение ManyToManyField в Django, которое включает два поля? - PullRequest
0 голосов
/ 06 января 2012

Мои упрощенные модели:

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

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

Я хочу, чтобы я мог определить другое поле оружия цена , и оно будет отличаться от каждого города.Я попытался добавить следующее к классу Оружия:

price = models.ManyToManyFields('City')

.. но он только дает мне список ответов такого типа: «Это оружие доступно в каких городах?»а не «Каковы разные цены на это оружие в каждом городе?»

Ответы [ 3 ]

2 голосов
/ 06 января 2012

Вы можете использовать промежуточную модель в поле ManyToMany:

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 голос
/ 06 января 2012

взгляните на ManyToManyField (through=...)

0 голосов
/ 06 января 2012

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

Вы можете явно создать свою таблицу «многие ко многим» с помощью внешнего ключа для каждой из других моделей.Я думаю, что это то, что вы после

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...