跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • django 中 如果没有 primary_key,是否无法建立 model?
未分類
2 1 月 2021

django 中 如果没有 primary_key,是否无法建立 model?

django 中 如果没有 primary_key,是否无法建立 model?

資深大佬 : lixuda 0

老数据表,本身没有 primary_key 是不是必须要指定一个 primary_key ? 之前用过 peewee,可以设置无 primary_key 数据表

大佬有話說 (11)

  • 資深大佬 : eastpiger

    django 在没有明确指定 pk 的时候会自动创建一个 pk 字段。

    https://kapeli.com/dash_share?docset_file=Django&docset_name=Django&path=doc/ref/models/fields.html%23s-primary-key&platform=django&repo=Main&version=3.1.4

    ## primary_key
    Field.primary_key
    If True, this field is the primary key for the model.

    If you don’t specify primary_key=True for any field in your model, Django will automatically add an AutoField to hold the primary key, so you don’t need to set primary_key=True on any of your fields unless you want to override the default primary-key behavior. For more, see Automatic primary key fields.

    primary_key=True implies null=False and unique=True. Only one primary key is allowed on an object.

    The primary key field is read-only. If you change the value of the primary key on an existing object and then save it, a new object will be created alongside the old one.

  • 主 資深大佬 : lixuda

    @eastpiger 已有数据库,不需要建库,有办法吗

  • 資深大佬 : virusdefender

    @eastpiger django 有 fake migration 等机制用于解决这种问题

  • 資深大佬 : eastpiger

    @lixuda #2 虽然确实有办法,但是非常复杂。不如写个程序转换一下。
    可以在 django 中定义好数据类型,然后 python3 manage.py shell
    from xxx.models import YourModel
    YourModel.xxxx
    这样直接把数据导入进去

  • 資深大佬 : heyDemon

    你把数据加进去, 默认会有一个自增主键, 只不过对你来说没用而已

  • 主 資深大佬 : lixuda

    @eastpiger 另外是否可以 2 个字段 设置 primary key ?

  • 資深大佬 : freakxx

    @lixuda #6

    我觉得应该有办法可以去做些处理,但我最近迷上 go 。
    如果回头你还没解决办法,我可以来玩下。

    你可以试下从这个角度去看看
    python manage.py inspectdb
    从 sql 反向成 model

  • 資深大佬 : liukun1212

    可以自动建立 pk,你迁移一下就自动加进去了。

  • 主 資深大佬 : lixuda

    @freakxx 谢谢,模型就是 inspectdb 生成,由于数据表默认没有 pk,所以 model 也没有 pk,导致 model 保存数据提示没有 pk 健

  • 主 資深大佬 : lixuda

    @freakxx go 不熟,比 python web 开发效率比?

  • 資深大佬 : freakxx

    @lixuda #10

    简单还是 py 简单,而且很傻瓜式

    但我不怎么想写 py 了,感觉太飘。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具