【问题标题】:Django - "ManyToMany" without primary key (AutoField)Django - 没有主键的“ManyToMany”(AutoField)
【发布时间】:2016-04-20 17:31:28
【问题描述】:

是否可以在 Django 中创建模型(或多对多关系)而无需数据库中的 id 字段(AutoField)?

例如,我有模型:TaskUser。用户可以分配许多任务,并且可以将任务分配给许多用户。 通常,Django 会创建包含 iduser_idtask_id 等字段的关系表。 id 字段可以省略吗? user_idtask_id 字段将被标记为 unique_together

【问题讨论】:

  • 是的,你可以。但为了什么目的?它使事情变得更加复杂而没有任何收获。
  • 恕我直言,通过删除和添加关系来防止 id 增加
  • 为什么这很重要?
  • @DanielRoseman 想象一下,您想要存储重复事件的可用日期,这些日期正在发生变化,删除所有这些日期并在事件更新时添加所有新内容比检查现有的、删除那些更便宜你不会使用和创建新的。如果你有一个受欢迎的服务,你的 ID 会快速增长,总有一天你会遇到问题……而 bigint 将无济于事。

标签: django many-to-many


【解决方案1】:

不,仅使用 user_idtask_id 字段是不可能创建多对多字段的。

All Django models must have exactly one primary key field。目前还不能使用复合主键(例如 (user_id, task_id))。

【讨论】:

    猜你喜欢
    • 2020-05-24
    • 2011-06-17
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多