代码之家  ›  专栏  ›  技术社区  ›  Matthew DeNardo

Django或类似的用于复合主键

  •  14
  • Matthew DeNardo  · 技术社区  · 16 年前

    我正在为我的工程公司编写一个web应用程序(警告:我只是一个业余爱好的程序员),在遇到这个问题之前,我一直计划使用Django。我想使用的模型自然具有多列主键。每 http://code.djangoproject.com/ticket/373 ,我不能使用Django,至少不能使用已发布的版本。有人能帮我解决一个问题吗,无论是通过另一个web框架(请仅基于Python)还是建议对模型进行更改,以便它能够适应Django的局限性?我真的希望后者,因为我希望借此机会学习Django。

    例子: 表1将part_number和part_revision作为两个字段,这两个字段应构成主键。P/N可以存在于多个修订中,但P/N+rev是唯一的。

    表2以part_number、part_revision和dimension_number作为主键。特定转速下的P/N可以有多个维度,但每个维度都是唯一的。此外,在这种情况下,P/N+rev应该是表一的外键。

    4 回复  |  直到 16 年前
        1
  •  24
  •   Dominic Rodger    16 年前

    part_number part_revision unique_together ?

    这基本上就是Mitch Wheat所说的Django风格。

        2
  •  20
  •   Mitch Wheat    16 年前

    解决方法是创建一个代理键(自动递增列)作为主键列,并在域复合键上放置一个唯一索引。

    然后,外键将引用代理主键列。

        3
  •  14
  •   shanyu    16 年前

        4
  •  2
  •   Denis Otkidach    16 年前