私が持っているDjangoアプリケーションを文書化するためにSphinxを使用しています。
ドキュメントを自動生成するとき、Sphinxにドキュメント内の各モジュールのフィールドを追加してもらいたいです。
Sphinxはこれらを完全にスキップします。実際、フィールドの痕跡はまったくありません。
何か案は?
私が持っているDjangoアプリケーションを文書化するためにSphinxを使用しています。
ドキュメントを自動生成するとき、Sphinxにドキュメント内の各モジュールのフィールドを追加してもらいたいです。
Sphinxはこれらを完全にスキップします。実際、フィールドの痕跡はまったくありません。
何か案は?
あなたは使用する必要があります
@param description
モデルのdocstringで、スフィンクスによって文書化するフィールドごとに。
または、代わりに、必要なことを実行するこのスニペットを確認する必要があります(退屈な書き込み部分を除く)
[編集]
このスニペットを使用する場合は、django>=1.6で
obj._meta._fields()
削除されましたに変更してください
_meta.fields
上記の@SamueleMattiuzzoが言及したスニペットは、実際の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
、モデルフィールドがドキュメントに自動的に追加されます。
このスニペットを使用する予定の場合、django1.7以降では次のようになります。
django.setup()
obj._meta.get_fields()
代わりに
使用
:
obj._meta._fields()