Сбой autodoc на django ImageField

Я пытаюсь использовать sphinx для документирования приложения django, которое я пишу. На данный момент у меня есть настройка code.rst для просмотра models.py, и когда я запускаю make html, я получаю автоматическую документацию, однако получаю предупреждение:

ВНИМАНИЕ: autodoc не может импортировать/найти атрибут myapp.models.MyModel.image, сообщает об ошибке: "image", проверьте правописание и sys.path

Весь журнал трассировки:

Traceback (most recent call last):
  File "C:\blah\lib\site-packages\sphinx\ext\autodoc.py", line 326, in import_object
    obj = self.get_attr(obj, part)
  File "C:\blah\lib\site-packages\sphinx\ext\autodoc.py", line 232, in get_attr
    return safe_getattr(obj, name, *defargs)
  File "C:\blah\lib\site-packages\sphinx\util\inspect.py", line 70, in safe_getattr
    raise AttributeError(name)
AttributeError: image

MyModel.image — это поле изображения, просто в модели, определяемое как:

#: image file location for ``MyModel``
image = models.ImageField(upload_to="images/")

Например, если я изменю изображение на models.Charfield, оно будет работать нормально. Есть ли причина, по которой ImageField может вызвать проблемы со сфинксом?

мой код.первый:

.. automodule:: dynamicbanners.models
   :members:

person ptr    schedule 12.11.2013    source источник
comment
После дальнейшего чтения, может ли это быть связано с тем фактом, что sphinx не инициализирует класс модели? Очевидно, что все мои атрибуты отображаются в документах как my_attr = None, потому что они не были инициализированы, и я прочитал ответы, которые предлагают может это баг? Я был бы очень удивлен, что НИКТО еще не сталкивался с этой проблемой. Это кажется странно специфичным для models.ImageField (хотя только что протестировано, это также происходит с models.FileField.   -  person ptr    schedule 12.11.2013
comment
добавил мой code.rst на всякий случай. Хотя прямо сейчас я бы принял ответ, если бы кто-то сказал мне, что раньше им успешно удавалось использовать autodoc в ImageField :)   -  person ptr    schedule 12.11.2013
comment
Связанный отчет об ошибке: bitbucket.org/birkenfeld/ сфинкс/выпуск/1254/   -  person mzjn    schedule 12.11.2013
comment
@mzjn: эта ссылка на отчет об ошибке не работает. (Он предлагает вам войти в систему или создать учетную запись, а затем говорит, что доступ запрещен).   -  person user9876    schedule 17.07.2015
comment
@ user9876, вот отчет об ошибке: github.com/sphinx-doc/sphinx/issues /1254   -  person mzjn    schedule 18.07.2015


Ответы (2)


Итак, после прочтения комментариев кажется, что это причуда Джанго, которая мешает sphinx.ext.autodoc. Надеюсь, исправление будет добавлено в Django 1.6 в ближайшее время, или, если это не удастся, я думаю, что предстоящая версия 1.2 Sphinx может обеспечить способ обойти это, но сейчас мне нужно найти какой-то обходной путь.

person ptr    schedule 14.11.2013
comment
Вам удалось это исправить? Я вижу точно такую ​​же проблему с pypi.python.org/pypi/jsonfield в Django. 1.6.5 и сфинкс 1.2.2. - person Charl Botha; 04.07.2014
comment
Если кому-то еще интересно, обходной путь для jsonfield немного отличается: bitbucket.org/birkenfeld/sphinx/issue/1254/ - person Charl Botha; 04.07.2014
comment
@CharlBotha: ссылка на отчет об ошибке не работает. (Он предлагает вам войти в систему или создать учетную запись, а затем говорит, что доступ запрещен). - person user9876; 17.07.2015
comment
@user9876, новая ссылка на отчет об ошибке: github.com/sphinx-doc/sphinx/issues /1254 - person mzjn; 18.07.2015