我正在建设一个网站出售自行车在django。我有一个包含自行车的类自行车,它看起来如下:
class Bike(models.Model):
brand = models.CharField(max_length=100)
model = models.CharField(max_length=100)现在,我想添加一个实地车轮描述自行车的车轮,我希望这个领域可能包含几个领域,如品牌,车轮的大小。我希望这些关于车轮实现的细节与自行车的类规范分开;然而,我希望每个车轮都与一个自行车相关联。
我的一个想法是做以下工作:
class Wheels(models.Model):
description = models.CharField(max_length=100)
size = models.DecimalField(max_digits=5,decimal_places=2)然后在我的自行车里加入一个新的领域:
class Bike(models.Model):
# previous fields
wheels = models.ForeignKey(Wheels)不过,我对此有一些疑问:
( 1)设计正确吗?如果我这样做,我最终会得到一个车轮的数据库,我不认为我真的需要。我只想在我的自行车数据库中有灵活的字段。基本上,我希望我会有一对一的关系自行车和车轮。
2)如果这是正确的设计,那么我想要的是能够在添加自行车的同时增加轮子(不要单独添加轮子)。做这件事的最好方法是什么?
非常感谢你的暗示/参考。我是django的初学者..。
发布于 2015-01-25 19:25:30
。。然后,您可以在您的管理区域中创建一个PresetBicycle,然后在您向客户显示的视图中,默认情况下可以显示PresetBicycle,还可以提供一个表单来购买它,该表单自动填充PresetBicycle的详细信息,并在提交时创建PurchasedBicycle实例( JS框架,如ReactJS和主干,或者角可能对客户视图最好)。
希望这能有所帮助!
请注意,我自己还没有测试过这种方法--我建议在版本控制中创建几个新分支(例如git),并为每个分支设置单独的设置文件(从一个基本设置文件导入,并为每个设置文件使用单独的数据库,以避免在做出最后决定之前需要处理过多的迁移和过时的表)来测试几种方法--最好尽早解决这些问题,这样您就不会在稍后做出重大的结构更改。
P.P.S也不是说我已将品牌字段更改为ForeignKey,因为您以后可能希望对该品牌进行过滤。
发布于 2015-01-24 12:32:04
我怀疑(在现实生活中)你真的会有一对一的关系自行车和车轮-不止一个自行车型号肯定会使用相同的车轮。
类似的现实生活中的关系存在自行车品牌/模型和部件,如脱轨,刹车,曲柄,踏板等。
顺便说一句,您不会为每个组件拥有单独的数据库,每个组件将被建模为同一个数据库中的一个表。
所以我的建议是采用多表方法,因为你最终会在不同的自行车上使用相同的组件,如果在相同的基本自行车模型中有可选的组件,例如相同的自行车,但不同的车轮大小,则可能相反。
https://stackoverflow.com/questions/28125300
复制相似问题