Найти - Пользователи
Полная версия: нубские вопросы по формам
Начало » Django » нубские вопросы по формам
1
chaotism
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 не получается
pythonlove
# 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)

Из второго вопроса так и не понял, что вы хотите сделать.
chaotism
во втором вопросе я задавался как на самой странице изменить выдачу полей форм.
когда делаешь форму наследующую какую-то родительскую форму, то первыми показываются поля родительской формы.
в вашем первом варианте таже ошибка что и у меня 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 нет
pythonlove
Вы уверены, что у вас обращение к переменной type_files не происходит несколькими строками раньше, чем она объявляется?

Конечно же у виджета Textarea нет атрибута max_length, ведь это не поле. Зато у него есть атрибут attrs
widget.attrs['maxlength']
Но откуда же вы все-таки хотите получить max_length - из поля модели, из поля формы или из атрибутов виджета?
chaotism
из поля модели, вообще хотел узнать как к ним обращаться.
MyModel._meta
MyModel.fieldname - нет атрибута, только методы модели
MyModel.Meta и MyModel._meta тоже не помогло
pythonlove
Можно так:
 MyModel._meta.get_field_by_name('my_field')[0].max_length
chaotism
спасибо, помогло, не замечал у себя опечатки
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB