имеем стуктуру (описываю
/django_project/forms.py
…
…
…
/django_project/apps/app1/forms.py
/django_project/forms.py
class CountersField(forms.fields.IntegerField):
def clean(self, value):
re_s= re.compile("\d*", re.U)
return super(CountersField, self).clean("".join(re.findall(re_s,value)))
/django_project/apps/app1/forms.py
from django_project.forms import CountersField
class SomeForm(forms.Form):
f1 = forms.ModelChoiceField()
f2 = forms.DateTimeField(initial = datetime.datetime(2008, 12,30))
input = CountersField()
output = CountersField()
при выводе этой формы в шаблоне отображаются только два первых поля.
Кастомное поле не отображается, потому, что
#python manage.py shell
>>> from django import forms
>>> from django_project.apps.app1.forms import SomeForm
>>> f= SomeForm()
>>> f.input
<django_project.forms.CountersField object at 0x120c110>
>>> isinstance(f.input, forms.Field)
False
От конфигурации строки импорта (from django.forms import Field или from django.forms.fields import Field) - ничего не зависит.
От конфигурации определения (class CountersField(forms.fields.IntegerField) или class CountersField(forms.Field или других комбинаций) - тоже ничего не зависит.
При этом - если встромить определение CountersField в /django_project/apps/app1/forms.py -
все работает нормально.
Может найдутся у когонибудь идеи, оправдывающие такое поведение всеми любимого языка?