Skip to content

Commit cfdbfde

Browse files
committed
Fix Class 'UserCreationForm' has no 'declared_fields' member. Refs #184
1 parent 851228f commit cfdbfde

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

pylint_django/augmentations/__init__.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,11 @@
281281
}
282282

283283

284+
FORM_ATTRS = {
285+
'declared_fields',
286+
}
287+
288+
284289
def ignore_import_warnings_for_related_fields(orig_method, self, node):
285290
"""
286291
Replaces the leave_module method on the VariablesChecker class to
@@ -577,6 +582,12 @@ def is_onetoonefield_attribute(node):
577582
return _attribute_is_magic(node, ONETOONE_FIELD_ATTRS, parents)
578583

579584

585+
def is_form_attribute(node):
586+
"""Checks that node is attribute of Form."""
587+
parents = ('django.forms.forms.Form', 'django.forms.models.ModelForm')
588+
return _attribute_is_magic(node, FORM_ATTRS, parents)
589+
590+
580591
def is_model_test_case_subclass(node):
581592
"""Checks that node is derivative of TestCase class."""
582593
if not node.name.endswith('Test') and not isinstance(node.parent, ClassDef):
@@ -735,6 +746,7 @@ def apply_augmentations(linter):
735746
suppress_message(linter, TypeChecker.visit_attribute, 'no-member', is_foreignkeyfield_attribute)
736747
suppress_message(linter, TypeChecker.visit_attribute, 'no-member', is_manytomanyfield_attribute)
737748
suppress_message(linter, TypeChecker.visit_attribute, 'no-member', is_onetoonefield_attribute)
749+
suppress_message(linter, TypeChecker.visit_attribute, 'no-member', is_form_attribute)
738750

739751
for parents, attrs in VIEW_ATTRS:
740752
suppress_message(linter, TypeChecker.visit_attribute, 'no-member', generic_is_view_attribute(parents, attrs))

pylint_django/tests/input/func_noerror_form_fields.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from __future__ import print_function
77
from datetime import datetime, date
88
from django import forms
9+
from django.contrib.auth.forms import UserCreationForm
910

1011

1112
class ManyFieldsForm(forms.Form):
@@ -69,3 +70,6 @@ def filefield_tests(self):
6970

7071
def numberfield_tests(self):
7172
print(self.intfield + 5)
73+
74+
75+
_ = UserCreationForm.declared_fields

0 commit comments

Comments
 (0)