在Django,我有以下型号:

class Pink(models.Model):
    ...

class White(models.Model):
    ...
    pinks = models.ManyToManyField(Pink)
    ...

在某一点上,我需要在aPinks中定义White的顺序。
(为了有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先生也无助于阅读……)

最佳答案

这取决于你的预期用途有多明确。
如果您只是在寻找一组白色的有序pink,那么您可以将所有内容填充到一个表中,并避免连接表PinkInWhite
但如果你将来可能想有其他颜色,除了红色,然后有粉红色直接系在白色,因为你做太多限制。只需将白色保留为白色,并创建一个连接表,将pink链接到适当的白色(带顺序)。然后你就有了制造蓝色、黄色、任何颜色的灵活性。
但你的问题的简短答案是,你拥有的将是有用的。

10-08 15:49