Syntastic + Django

Я только начал развиваться на Django, и тогда я подумал, что использовать Syntastic синтаксическую проверку было бы хорошей идеей.

Проблема в том, что она жалуется на то, что некоторые вещи ошибочны, когда они фактически не являются.

Примеры:

  • Для

    from django.core.urlresolvers import reverse
    

    Я получаю:

    error| [F0401] Unable to import 'django.core.urlresolvers'
    
  • Для

    amount = self.sale_set.filter(date__year=year).aggregate(sum=Sum('amount'))["sum"]
    

    Я получаю (где self является Album)

    error| [E1101, Album.get_sales_total] Instance of 'Album' has no 'sale_set' member
    

Этот код отлично работает даже с этими "ошибками", но как я могу заставить Syntastic правильно вести себя?

Ответ 1

ответ на @supervacuo ответ:

есть способ заставить это работать для синтаксиса, и это довольно просто, если не легко понять кого-то, незнакомого с синтаксическими параметрами (например, я):

в вашем .vimrc, добавьте эту строку:

let g:syntastic_python_pylint_args = "--load-plugins pylint_django"

конечно, это требует установки pylint-django в вашей среде

Ответ 2

Оба этих сообщения приходят от pylint - вы можете видеть более полные объяснения с помощью pylint --help-msg=$ID или на http://pylint-messages.wikidot.com/.

Вы можете отключить проверки, например. from django.core.urlresolvers import reverse # pylint: disable=F0401, но это довольно утомительно.

Там плагин pylint для Django, который определенно исправит ваш E1101 (и я надеюсь, что F0401 тоже). Возможно, вам стоит установить плагин и настроить Syntastic для его использования?