Django Orm 创建表增加注释到数据库

背景

  • 最近项目需要生成数据库文档,根据数据库中的注释信息可以自动导出文档.但是项目使用的django,定义的orm类生成migration,导入到数据库后没有注释信息,于是修改django来支持注释信息。

  • 我们以Django1.8.14为基础进行修改。

字段注释

利用Field定义中help_text属性作为注释。

修改django/db/backends/base/schema.py 文件,column_sql函数,如下:

def column_sql(self, model, field, include_default=False):
    """
    Takes a field and returns its column definition.
    The field must already have had set_attributes_from_name called.
    """
    ...

    # Optionally add the tablespace if it's an implicitly indexed column
    tablespace = field.db_tablespace or model._meta.db_tablespace
    if tablespace and self.connection.features.supports_tablespaces and field.unique:
        sql += " %s" % self.connection.ops.tablespace_sql(tablespace, inline=True)

    # 增加针对mysql注释的处理
    if self.connection.client.executable_name == 'mysql' and field.help_text:
        sql += " COMMENT '%s'" % field.help_text

    # Return the sql
    return sql, params

表注释

待修改