django模型字段在数据库中的注释

时间:2018-05-30 07:55:04

标签: django

这是模型类(django版本2.0)

class Host(models.Model):
    host_id=models.CharField(max_length=20,primary_key=True)
    host_label=models.CharField(verbose_name="linux_host_label",max_length=255)

数据库中的表格结构

mysql> show create table dashboard_host;
| dashboard_host | CREATE TABLE `dashboard_host` (
  `host_id` varchar(20) NOT NULL,
  `host_label` varchar(255) NOT NULL,
  PRIMARY KEY (`host_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |

但是如何在模型类中做到这样

mysql> show create table dashboard_host;
| dashboard_host | CREATE TABLE `dashboard_host` (
  `host_id` varchar(20) NOT NULL COMMENT '主机id',
  `host_label` varchar(255) NOT NULL COMMENT '主机标签',
  PRIMARY KEY (`host_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
+----------------+-----------------------------------

3 个答案:

答案 0 :(得分:1)

直接从模型中django没有这样的方法。你可以查看机票https://code.djangoproject.com/ticket/24638

但你可以做一件事,

首先makemigrations your app,然后编辑迁移文件并放置

  CREATE TABLE `dashboard_host` (
  `host_id` varchar(20) NOT NULL COMMENT '主机id',
  `host_label` varchar(255) NOT NULL COMMENT '主机标签',
  PRIMARY KEY (`host_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

由django自动生成的sql查询的原位

然后migrate

答案 1 :(得分:0)

看起来像您目前不能,至少在Django中不行。我能够在Django中找到2个类似的请求票证:

#13867 Feature request: Comments in Django models saved to database schema

9年前开业,一年后以wontfix的名义撤消,根据的基本原理,“它的有用/噪声比不好。ORM的目的不是提供支持的数据库引擎的每个功能的Python接口”

#18468 Add the ability to define comments in table / columns

开业于7年前,被标记为上述内容的复制品,故事的结尾直到...情节扭转! 重新开放于2018-03年,在邮件列表中进行了讨论,现在标记为已接受。最初的拒绝者说“我想我们可以实现该功能。(是的,我从六年前买票时就改变了主意。)”

所以现在这仅需要一个实现/补丁/ PR,尚未完成(但是任何人都可以做出贡献!)

票证提交者开始制作补丁,并创建了一个Django应用程序,该应用程序解决了PostgreSQL后端上的字段问题(使用verbose_namehelp_text属性)。您正在使用MySQL,但对其进行修改可能很简单:

https://github.com/vanadium23/django-db-comments

答案 2 :(得分:0)

您可以使用python软件包:https://pypi.org/project/django-comment-migrate/, 它具有两个特征:

  1. 自动迁移模型help_text进行评论
  2. 提供命令以迁移指定应用的评论 例子