• window系统下为django自动绘制模型类关系图


    Django 提供第三方包 django-extensions,可以用来将 Django 中的 Models 生成 E-R 图。

    1 安装包

    pip install django-extensions

    2 配置

    在 Django settings.py 文件, INSTALLED_APPS 中添加 django_extensions

    1. INSTALLED_APPS = (
    2. 'django_extensions',
    3. )

    3 生成 dot 文件和 png 图片

    • 生成全部 model 的 E-R 图
    python manage.py graph_models -a > all.dot
    • 单独某个 Django App (以 django_view_permission 为例) 生成 dot 文件
    python manage.py graph_models django_view_permission > django_view_permission.dot

    导出的 dot 内容如下:django_view_permission.dot

    1. digraph model_graph {
    2. // Dotfile by Django-Extensions graph_models
    3. // Created: 2018-03-03 14:55
    4. // Cli Options: django_view_permission
    5. fontname = "Helvetica"
    6. fontsize = 8
    7. splines = true
    8. node [
    9. fontname = "Helvetica"
    10. fontsize = 8
    11. shape = "plaintext"
    12. ]
    13. edge [
    14. fontname = "Helvetica"
    15. fontsize = 8
    16. ]
    17. // Labels
    18. django_view_permission_models_CommonElement [label=<
    19. "palegoldenrod" BORDER="0" CELLBORDER="0" CELLSPACING="0">
    20. "2" CELLPADDING="4" ALIGN="CENTER" BGCOLOR="olivedrab4">
    21. "Helvetica Bold" COLOR="white">
    22. CommonElement
    23. "LEFT" BORDER="0">
    24. "#7B7B7B" FACE="Helvetica ">create_time
    25. "LEFT">
    26. "#7B7B7B" FACE="Helvetica ">DateTimeField
    27. "LEFT" BORDER="0">
    28. "#7B7B7B" FACE="Helvetica ">doc
    29. "LEFT">
    30. "#7B7B7B" FACE="Helvetica ">TextField
    31. "LEFT" BORDER="0">
    32. "#7B7B7B" FACE="Helvetica ">update_time
    33. "LEFT">
    34. "#7B7B7B" FACE="Helvetica ">DateTimeField
    35. >]
    36. django_view_permission_models_View [label=<
    37. "palegoldenrod" BORDER="0" CELLBORDER="0" CELLSPACING="0">
    38. "2" CELLPADDING="4" ALIGN="CENTER" BGCOLOR="olivedrab4">
    39. "Helvetica Bold" COLOR="white">
    40. View
      <"Helvetica Italic">CommonElement>
    41. "LEFT" BORDER="0">
    42. "Helvetica Bold">id
    43. "LEFT">
    44. "Helvetica Bold">AutoField
    45. "LEFT" BORDER="0">
    46. "#7B7B7B" FACE="Helvetica Italic">create_time
    47. "LEFT">
    48. "#7B7B7B" FACE="Helvetica Italic">DateTimeField
    49. "LEFT" BORDER="0">
    50. "#7B7B7B" FACE="Helvetica Italic">doc
    51. "LEFT">
    52. "#7B7B7B" FACE="Helvetica Italic">TextField
    53. "LEFT" BORDER="0">
    54. "#7B7B7B" FACE="Helvetica ">func
    55. "LEFT">
    56. "#7B7B7B" FACE="Helvetica ">CharField
    57. "LEFT" BORDER="0">
    58. "#7B7B7B" FACE="Helvetica ">module
    59. "LEFT">
    60. "#7B7B7B" FACE="Helvetica ">CharField
    61. "LEFT" BORDER="0">
    62. "#7B7B7B" FACE="Helvetica ">name
    63. "LEFT">
    64. "#7B7B7B" FACE="Helvetica ">CharField
    65. "LEFT" BORDER="0">
    66. "#7B7B7B" FACE="Helvetica Italic">update_time
    67. "LEFT">
    68. "#7B7B7B" FACE="Helvetica Italic">DateTimeField
    69. >]
    70. django_view_permission_models_ViewSet [label=<
    71. "palegoldenrod" BORDER="0" CELLBORDER="0" CELLSPACING="0">
    72. "2" CELLPADDING="4" ALIGN="CENTER" BGCOLOR="olivedrab4">
    73. "Helvetica Bold" COLOR="white">
    74. ViewSet
      <"Helvetica Italic">CommonElement>
    75. "LEFT" BORDER="0">
    76. "Helvetica Bold">id
    77. "LEFT">
    78. "Helvetica Bold">AutoField
    79. "LEFT" BORDER="0">
    80. "#7B7B7B" FACE="Helvetica Italic">create_time
    81. "LEFT">
    82. "#7B7B7B" FACE="Helvetica Italic">DateTimeField
    83. "LEFT" BORDER="0">
    84. "#7B7B7B" FACE="Helvetica Italic">doc
    85. "LEFT">
    86. "#7B7B7B" FACE="Helvetica Italic">TextField
    87. "LEFT" BORDER="0">
    88. "Helvetica ">name
    89. "LEFT">
    90. "Helvetica ">CharField
    91. "LEFT" BORDER="0">
    92. "#7B7B7B" FACE="Helvetica Italic">update_time
    93. "LEFT">
    94. "#7B7B7B" FACE="Helvetica Italic">DateTimeField
    95. >]
    96. django_view_permission_models_ViewPermission [label=<
    97. "palegoldenrod" BORDER="0" CELLBORDER="0" CELLSPACING="0">
    98. "2" CELLPADDING="4" ALIGN="CENTER" BGCOLOR="olivedrab4">
    99. "Helvetica Bold" COLOR="white">
    100. ViewPermission
      <"Helvetica Italic">CommonElement>
    101. "LEFT" BORDER="0">
    102. "Helvetica Bold">id
    103. "LEFT">
    104. "Helvetica Bold">AutoField
    105. "LEFT" BORDER="0">
    106. "#7B7B7B" FACE="Helvetica Italic">create_time
    107. "LEFT">
    108. "#7B7B7B" FACE="Helvetica Italic">DateTimeField
    109. "LEFT" BORDER="0">
    110. "#7B7B7B" FACE="Helvetica Italic">doc
    111. "LEFT">
    112. "#7B7B7B" FACE="Helvetica Italic">TextField
    113. "LEFT" BORDER="0">
    114. "#7B7B7B" FACE="Helvetica Italic">update_time
    115. "LEFT">
    116. "#7B7B7B" FACE="Helvetica Italic">DateTimeField
    117. >]
    118. // Relations
    119. django_view_permission_models_View -> django_view_permission_models_CommonElement
    120. [label="abstract\ninheritance"] [arrowhead=empty, arrowtail=none, dir=both];
    121. django_view_permission_models_ViewSet -> django_view_permission_models_View
    122. [label="views (viewset)"] [arrowhead=dot arrowtail=dot, dir=both];
    123. django_view_permission_models_ViewSet -> django_view_permission_models_CommonElement
    124. [label="abstract\ninheritance"] [arrowhead=empty, arrowtail=none, dir=both];
    125. account_models_BkUser [label=<
    126. "palegoldenrod" BORDER="0" CELLBORDER="0" CELLSPACING="0">
    127. "2" CELLPADDING="4" ALIGN="CENTER" BGCOLOR="olivedrab4">
    128. "Helvetica Bold" COLOR="white">BkUser
    129. >]
    130. django_view_permission_models_ViewPermission -> account_models_BkUser
    131. [label="users (viewpermission)"] [arrowhead=dot arrowtail=dot, dir=both];
    132. django_view_permission_models_ViewPermission -> django_view_permission_models_View
    133. [label="views (viewpermission)"] [arrowhead=dot arrowtail=dot, dir=both];
    134. django_view_permission_models_ViewPermission -> django_view_permission_models_ViewSet
    135. [label="views_set (viewpermission)"] [arrowhead=dot arrowtail=dot, dir=both];
    136. django_view_permission_models_ViewPermission -> django_view_permission_models_CommonElement
    137. [label="abstract\ninheritance"] [arrowhead=empty, arrowtail=none, dir=both];
    138. }

    生成后的文件我没有找到在哪里,就自己建了同名的文件,输入了控制台输出的内容

    如果有知道的,欢迎评论区告诉我,或者私信我,不胜感谢

    • 生成图片

    由于生成的是 dot 格式的图片描述文件,需要使用工具进行转换成常用的 PNG 格式图片。可以下载 graphviz ,并将 /bin/dot.exe 加入系统 PATH 中(安装的时候有添加环境变量提示,勾选即可)。

    dot -Tpng django_view_permission.dot > django_view_permission.png 
    

     字体默认是 Roboto,可以换成其他的字体

  • 相关阅读:
    Elastic Agent 的安装及使用
    Java入门第三季
    每日一题 2586. 统计范围内的元音字符串数(简单)
    [创业之路-85]:IT创业成功老板的品质、创业失败老板的特征、成功领导者的品质、失败管理者的特征
    对比分析小游戏引擎孰优孰劣
    第一个vue-cli程序
    vue provide inject使用
    【身份证识别】基于matlab GUI BP神经网络身份证识别【含Matlab源码 2239期】
    Linux C 基于tcp和epoll在线聊天室
    模型实战(16)之StrongSort (OSNET)配合YOLOv5、v7、v8 实现多目标跟踪详解
  • 原文地址:https://blog.csdn.net/weixin_72949205/article/details/139664523