12

私が持っているDjangoアプリケーションを文書化するためにSphinxを使用しています。

ドキュメントを自動生成するとき、Sphinxにドキュメント内の各モジュールのフィールドを追加してもらいたいです。

Sphinxはこれらを完全にスキップします。実際、フィールドの痕跡はまったくありません。

何か案は?

4

3 に答える 3

8

あなたは使用する必要があります

@param description

モデルのdocstringで、スフィンクスによって文書化するフィールドごとに。

または、代わりに、必要なことを実行するこのスニペットを確認する必要があります(退屈な書き込み部分を除く)

[編集]

このスニペットを使用する場合は、django>=1.6で

obj._meta._fields() 

削除されましたに変更してください

_meta.fields 
于 2012-10-16T12:03:20.783 に答える
3

上記の@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、モデルフィールドがドキュメントに自動的に追加されます。

于 2018-03-12T11:01:16.687 に答える
0

このスニペットを使用する予定の場合、django1.7以降では次のようになります。

  1. djangoプロジェクトをセットアップする必要がありました django.setup()
  2. obj._meta.get_fields() 代わりに 使用 : obj._meta._fields()
于 2015-11-29T11:29:14.497 に答える