【问题标题】:Django Admin cannot render tables without Primary KeyDjango Admin 无法呈现没有主键的表
【发布时间】:2016-07-24 09:39:24
【问题描述】:

我在我的网络中实现了 Django Admin 来管理我的模型中的所有表。在我尝试查看(用于编辑、添加、删除记录)没有主键的随机表之前,它工作正常。如果我尝试访问此表,则会出现消息 unknown column xxx.id in field list

我知道 Django 正在将 id 字段添加到没有主键的表中。 什么对我有用?我不介意是否必须在 list_field 中显示 id 字段,但如果我尝试 Django 警告我该字段不存在。 我可以定义一个唯一值来解决这个问题吗(我的表没有 PK,而是一起唯一......)

我尝试将主键属性添加到具有这些问题的模型类中的随机字段。这是有效的,但我不需要对字段进行限制,如果我添加这个 PK,我不能在其他记录中重复这个值。

我该如何解决这个问题?

【问题讨论】:

    标签: django django-models django-admin django-views


    【解决方案1】:

    如果您对相关模型进行了更改,则可能需要迁移。在项目的根目录(或 manage.py 文件所在的任何位置)键入

    $ python manage.py makemigrations
    

    然后输入

    $ python manage.py migrate
    

    可能是您在模型中添加了一个模型字段,但它还没有在数据库中,所以当您尝试在管理员中编辑它时出现此错误。

    更新

    基于this questionthis one,听起来Django 试图自动添加id 列,因为您没有在模型上定义主键。 id 可能没有传播到数据库。因此尝试

    $ python manage.py dbshell
    

    现在您可以将列直接添加到数据库表中

    mysql> ALTER TABLE your_table_name ADD id integer AUTO_INCREMENT NOT NULL PRIMARY KEY FIRST;
    mysql> exit;
    

    然后尝试重新加载您的管理页面...

    【讨论】:

    • 不,我做到了,但问题仍然存在。可能与外键有关并且没有主键?如果我在随机字段中添加随机主键,问题就解决了......
    • 再次感谢瑞恩...它工作...我只记得,休眠和实体强制你一样。如果要将表映射到类,则应该有一个主键。太好了!!
    猜你喜欢
    • 1970-01-01
    • 2020-02-18
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    相关资源
    最近更新 更多