3
在Django中,我有以下型号:数据库设计:责令很多一对多的关系
class Pink(models.Model):
...
class White(models.Model):
...
pinks = models.ManyToManyField(Pink)
...
在某个时候,我需要定义里面White
的Pinks
排序(为了有White1.pinks: P1, P2, P3
而不是随机White1.pinks: P2, P3, P1
), 所以我创建
class PinkInWhite(models.Model):
pink = models.ForeignKey(Pink)
white = models.ForeignKey(White)
position = models.PositiveIntegerField("pink's position inside this white")
class Meta:
ordering = ['white','position']
问题1:这是更好的解决方案吗?
问题2:这显然是多余的:我还有一个pinks
场在我White
模式,因为我需要它在不需要排序的其他情形。我可以保留它,还是更好地删除它,并始终使用PinkInWhite
关系模型?
(型号名称是虚构的。为了简化,我没有使用模型的实名制的问题,和谈论X先生和Y先生也不会帮可读性...)
如果您确实需要使用连接表/连接表,则在Django中实现的方式称为使用直通模式 - 请参阅http://docs.djangoproject.com/en/dev/topics/db/models/ #额外的字段上,多到多对多关系 – 2010-09-16 18:33:30