我试图弄清楚如何在我的项目中存储城市之间的价格,这样我就能舒适地工作,管理员可以轻松地改变这些价格。
我决定根据此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)
或其他东西,管理员可以更改价格。
答案 0 :(得分:0)
错误非常清楚,您与intermediate
表和symmetrical=True
之间不能建立M2M关系,它必须是symmetrical=False
。
请尝试:
rides = models.ManyToManyField('self', through='Ride', symmetrical=False)
但是,我认为您的模型结构有问题,您有两个指向self
的M2M字段?我不确定Rides
模型的用途是什么,但是这个模型可能只有FKs
到city
。