具有中间表的多对多字段不得对称

时间:2016-07-31 08:45:17

标签: python django django-models

我试图弄清楚如何在我的项目中存储城市之间的价格,这样我就能舒适地工作,管理员可以轻松地改变这些价格。

我决定根据此ANSWER创建一个through模型,称为Ride

但是当我做makemigrations时,Django会返回:

  

va_app.City.rides:(fields.E332)具有中间表的多对多字段不得对称。

class City(models.Model):
    name = models.CharField(max_length=80)
    country = models.ForeignKey('Country')
    _close_cities = models.ManyToManyField('City', blank=True, related_name='close_cities_set',symmetrical=True)
    rides = models.ManyToManyField('self',through='Ride')

class Ride(models.Model):
    price = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)

你知道怎么做吗?

PS>我唯一想要的是能够简单地访问价格(如City.price(City)或其他东西,管理员可以更改价格。

1 个答案:

答案 0 :(得分:0)

错误非常清楚,您与intermediate表和symmetrical=True之间不能建立M2M关系,它必须是symmetrical=False

请尝试:

rides = models.ManyToManyField('self', through='Ride', symmetrical=False)

但是,我认为您的模型结构有问题,您有两个指向self的M2M字段?我不确定Rides模型的用途是什么,但是这个模型可能只有FKscity