Форум сайта python.su
class InputForm(forms.Form): files = forms.CharField(label=_('Файлы данных типа %s'%','join(self.type_files)), widget=Textarea) description = forms.CharField(label=_('Описание задачи'), widget=Textarea(attrs={'placeholder':'Описание задачи не более 100 знаков','maxlenght':'100'}), max_length=100) type_files = ('exe','py') #Залипаю как обратиться к атрибуту класса inputForm, чтобы в label для files сделать перечисление class Key(models.Model): """ Ключ. """ key_file = charfield(max_length=256, blank=True) class OsmInputForm(InputForm): version_time = forms.DateField(label=_('Дата версии'), required = False) type_files = TYPE_OSM_FILES class Meta: fields = ['version_time', 'files', 'description'] #Как сделать сортировку по полям - в базе отображаются поля родительского класса, потом уже наследующего, Meta не помогает #И как в форме обратиться к атрибутам поля модели - хочу в label написать max_lenght, пробовал через _meta не получается
Отредактировано chaotism (Май 8, 2014 10:48:35)
Офлайн
# 1: class InputForm(forms.Form): type_files = ('exe','py') files = forms.CharField( label=_(u'Файлы данных типа {}').format(', '.join(type_files)), widget=Textarea, ) # ...
# 3: class MyForm(forms.Form): my_field = forms.CharField(label='My field', max_length=123) def __init__(self, *args, **kwargs): super(MyForm, self).__init__(*args, **kwargs) field = self.fields['my_field'] field.label = u'{} (max length: {})'.format(field.label, field.max_length)
Офлайн
во втором вопросе я задавался как на самой странице изменить выдачу полей форм.
когда делаешь форму наследующую какую-то родительскую форму, то первыми показываются поля родительской формы.
в вашем первом варианте таже ошибка что и у меня name type_files is not defined
в 3 варианте завалится конструкция не найдя атрибута max length
def __init__(self, *args, **kwargs): super(AuthKeyForm, self).__init__(*args, **kwargs) self.fields['key_file'].label = 'Файл ключа ' self.fields['comment'].widget=Textarea(attrs={'placeholder':'Коментарии не более 512 знаков','maxlenght':'512'}) #делается это для фронтенда, для ограничения длинны ввода, у виджета textarea атрибута maxlenght нет
Офлайн
Вы уверены, что у вас обращение к переменной type_files не происходит несколькими строками раньше, чем она объявляется?
Конечно же у виджета Textarea нет атрибута max_length, ведь это не поле. Зато у него есть атрибут attrs
widget.attrs['maxlength']
Офлайн
из поля модели, вообще хотел узнать как к ним обращаться.
MyModel._meta
MyModel.fieldname - нет атрибута, только методы модели
MyModel.Meta и MyModel._meta тоже не помогло
Офлайн
Можно так:
MyModel._meta.get_field_by_name('my_field')[0].max_length
Офлайн
спасибо, помогло, не замечал у себя опечатки
Отредактировано chaotism (Май 8, 2014 16:36:19)
Офлайн