Всем привет!
Написал кастомный виджет:
class EmptyWidget(Widget):
template_name = 'widgets/empty.html'
def get_context(self, name, value, attrs=None):
return {'widget': {
'name': name,
'value': value,
}}
def render(self, name, value, attrs=None):
print '========================'
context = self.get_context(name, value, attrs)
template = loader.get_template(self.template_name).render(context)
return mark_safe(template)
Но когда назначаю его в форме через
widgets = {
'TargetProfile': EmptyWidget()
}
то ничего не происходит: TargetProfile отображается как обычный SlugField. Если назначаю так:
TargetProfile = forms.SlugField(label='Автор', initial='',widget = EmptyWidget)
то получаю ошибку
global name 'loader' is not defined
Полный код:
from main.widgets import EmptyWidget
class RatingForm(forms.ModelForm):
TargetProfile = forms.SlugField(label='Автор', initial='',widget = EmptyWidget)
class Meta(object):
model = Raiting
fields = ('Value', 'Target')
'Value': 'Оценка',
'Target': 'К записи',
}
help_texts = {
'Value': ('Изменить значение'),
}
widgets = {
'TargetProfile': EmptyWidget()
}
def __init__(self, *args, **kwargs):
if kwargs.__contains__(u'instance'): #скорее всего для python3 другое...
if kwargs[u'instance']:
kwargs.update(initial={
# 'field': 'value'
'TargetProfile': kwargs[u'instance'].Target.From # переопределит get_fields в TabularInline
})
print kwargs[u'instance']
super(RatingForm, self).__init__(*args, **kwargs)
self.submit = u'Оценить'
self.css_class = ''
Полный код ошибки:
Request Method: GET
Request URL: http://127.0.0.1:8000/raiting/
Django Version: 1.11.17
Exception Type: NameError
Exception Value:
global name 'loader' is not defined
Error during template rendering
Что это за ошибка?