我正在使用 Sphinx 来记录我拥有的 Django 应用程序。
在自动生成文档时,我希望 Sphinx 在文档中添加每个模块的字段。
狮身人面像完全跳过这些。事实上,没有任何领域的痕迹。
有任何想法吗?
我正在使用 Sphinx 来记录我拥有的 Django 应用程序。
在自动生成文档时,我希望 Sphinx 在文档中添加每个模块的字段。
狮身人面像完全跳过这些。事实上,没有任何领域的痕迹。
有任何想法吗?
你必须使用
@param description
在模型的文档字符串中,对于您希望由 sphinx 记录的每个字段。
或者,你应该看看这个你想要的片段(减去无聊的写作部分)
[编辑]
如果你打算使用这个片段,在 django>=1.6
obj._meta._fields()
已删除,请更改为
_meta.fields
这是上面@Samuele Mattiuzzo 提到的一个片段,已更新以支持实际的 Django 版本(在 1.11 LTS 上测试):
import inspect
from django.utils.html import strip_tags
def process_docstring(app, what, name, obj, options, lines):
# This causes import errors if left outside the function
from django.db import models
# Only look at objects that inherit from Django's base model class
if inspect.isclass(obj) and issubclass(obj, models.Model):
# Grab the field list from the meta class
fields = obj._meta.fields
for field in fields:
# Decode and strip any html out of the field's help text
help_text = strip_tags(field.help_text)
# Decode and capitalize the verbose name, for use if there isn't
# any help text
verbose_name = field.verbose_name
if help_text:
# Add the model field to the end of the docstring as a param
# using the help text as the description
lines.append(u':param %s: %s' % (field.attname, help_text))
else:
# Add the model field to the end of the docstring as a param
# using the verbose name as the description
lines.append(u':param %s: %s' % (field.attname, verbose_name))
# Add the field's type to the docstring
lines.append(u':type %s: %s' % (field.attname, type(field).__name__))
# Return the extended docstring
return lines
def setup(app):
# Register the docstring processor with sphinx
app.connect('autodoc-process-docstring', process_docstring)
只需将其添加到您的末尾,conf.py
模型字段将自动添加到文档中。
如果您打算在 django 1.7+ 中使用此代码段:
django.setup()
obj._meta.get_fields()
代替:
obj._meta._fields()