Django会为模型获取错误的content_type_id吗?

时间:2018-09-28 14:38:44

标签: mysql django

当我在django-admin中编辑对象(用户276)时,出现外键错误:

IntegrityError at /admin/auth/user/276/change/

(1452, 'Cannot add or update a child row: a foreign key constraint fails 
(`my_db_name`.`django_admin_log`, CONSTRAINT 
`django_admin__content_type_id_c4bce8eb_fk_django_content_type_id` 
FOREIGN KEY (`content_type_id`) REFERENCES `django_content_type` (`id`))')

在根据django_admin_log表中的用户276检查记录时,我看到字段content_type_id为126。

mysql> select id, object_id, content_type_id, user_id from django_admin_log order by id; +----+-----------+-----------------+---------+ | id | object_id | content_type_id | user_id | +----+-----------+-----------------+---------+ | 1 | 276 | 126 | 276 | | 6 | 276 | 126 | 276 | | 8 | 276 | 126 | 276 | | 9 | 276 | 126 | 276 | | 10 | 276 | 126 | 276 | | 11 | 276 | 126 | 276 | | 13 | 1 | 144 | 276 | | 16 | 1 | 182 | 276 | | 19 | 276 | 126 | 276 | +----+-----------+-----------------+---------+ 9 rows in set (0.00 sec)

当我查看django_content_types表时,我发现ID 126确实存在,并且与正确的类型有关:

mysql> select * from django_content_type order by id; +-----+---------------+---------------------------------+ | id | app_label | model | +-----+---------------+---------------------------------+ | 124 | auth | group | | 125 | auth | permission | | 126 | auth | user | | 127 | contenttypes | contenttype | | 128 | sessions | session | | 129 | sites | site | | 130 | admin | logentry | | 131 | account | emailconfirmation |

因此对于较旧的日志,一切似乎都正确,但是现在,由于某种原因,当在admin中编辑用户时,Django尝试将content_id不同于126的用户276行插入到276用户的django_admin_log中(否则,不会得到FK约束。

问题是:Django如何为模型获取不正确的content_type_id?还是正在发生其他事情?

其他信息:

  1. 我认为我在admin.py文件中没有做任何有趣的事情,但请询问是否要查看它。
  2. 我正在使用django-db-multitenant将MySQL连接作为多租户体系结构站点来做非常有趣的事情

在Ubuntu上使用django 2.0和MySQL。

0 个答案:

没有答案