【问题标题】:ManyToManyField references the 'id' field when using a custom primary key使用自定义主键时,ManyToManyField 引用“id”字段
【发布时间】:2017-08-29 16:29:53
【问题描述】:

我正在为具有几个 ManyToManyFields 的模型使用自定义主键。当我更新模型并将对象添加到 ManyToManyField(使用 add(new_object))时,我收到一个错误,表明它使用 id 字段查找主键(可能存在于中间表中,但不在模型)。

psycopg2.DataError: invalid input syntax for integer: "TL98GK"
LINE 1: ...WHERE ("placedir_place_place_categ"."place_id" = 'TL98GK' A...

我已经在 SO 上搜索了一段时间,但无法在确切的问题上归零。我想我可能不得不为 ManytoManyFields 使用自定义直通表(作为使用自定义主键的惩罚),但老实说我不想走这条路。

使用 Django 1.10 和 Python 3

【问题讨论】:

    标签: python django django-models


    【解决方案1】:

    迁移似乎无法很好地检测外键类型更改。这是一个已知的bug。提到了一种解决方法here(即将字段type 显式更改为varchar(32))。

    但是,根据您的用例,您可能需要做更多的事情(例如更新表格上的constraints 等)。 (对于那些有兴趣走这条路的人,here 是一个带有相应迁移代码的示例)。

    (p.s 我刚刚决定不在具有多字段的模型上使用自定义主键)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-03
      • 2011-04-08
      • 1970-01-01
      • 2015-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-30
      相关资源
      最近更新 更多