我正在开发一个网络应用。这个应用程序的模型Location
可以是纽约,维也纳,巴黎等。
现在我想要一些数据结构/表格,其中包含来自Location
个对象的任何元组的价格。
所以如果还有3个物品 - NY,PA,WI,我必须存储价格:
NY - PA #(since there is NY - PA price, I don't have to store PA - NY which is the same)
NY - WI
PA - WI
我希望管理员能够为任何元组添加/更改价格。
我该怎么办?我想到了一些可以保存价格信息的网格,但我不知道如何在Django admin
和Django ORM
中模拟这样的网格。
到目前为止,我所做的是创建一个模型CityPrice
,如下所示:
class CityPrice(models.Model):
city_one = models.ForeignKey(City, related_name='city_tuple')
city_two = models.ForeignKey(City)
price = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)
class Meta:
unique_together = (('city_one', 'city_two'),)
但是你可以看到那里存在多个问题。一个问题是城市不平等#34;一个必须是city_one
,一个必须是city_two
。另一个问题是Admin
必须为Django-Admin
中的每个元组新标签打开并更改那里非常不舒服的价格。
答案 0 :(得分:0)
我认为很好的解决方案是让每个Location
模型都有一个ManyToManyField
字段,该字段链接到CityPrice
模型。这样,许多Location
模型将共享相同的价格,您将能够为一个城市分配多个价格。
class Location(models.Model):
# your stuff
price = models.ManyToManyField(CityPrice)
您可以通过以下方式获得价格相同的城市:
price_object.locations.all()
有关此内容的更多信息和示例:https://docs.djangoproject.com/en/1.9/topics/db/examples/many_to_many/