Уведомления

Группа в Telegram: @pythonsu

#1 Май 8, 2014 10:47:20

chaotism
От:
Зарегистрирован: 2010-11-29
Сообщения: 76
Репутация: +  1  -
Профиль   Отправить e-mail  

нубские вопросы по формам

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)

Офлайн

#2 Май 8, 2014 11:45:53

pythonlove
Зарегистрирован: 2014-04-22
Сообщения: 16
Репутация: +  4  -
Профиль   Отправить e-mail  

нубские вопросы по формам

# 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)

Из второго вопроса так и не понял, что вы хотите сделать.

Офлайн

#3 Май 8, 2014 12:14:51

chaotism
От:
Зарегистрирован: 2010-11-29
Сообщения: 76
Репутация: +  1  -
Профиль   Отправить e-mail  

нубские вопросы по формам

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



Офлайн

#4 Май 8, 2014 13:57:01

pythonlove
Зарегистрирован: 2014-04-22
Сообщения: 16
Репутация: +  4  -
Профиль   Отправить e-mail  

нубские вопросы по формам

Вы уверены, что у вас обращение к переменной type_files не происходит несколькими строками раньше, чем она объявляется?

Конечно же у виджета Textarea нет атрибута max_length, ведь это не поле. Зато у него есть атрибут attrs

widget.attrs['maxlength']
Но откуда же вы все-таки хотите получить max_length - из поля модели, из поля формы или из атрибутов виджета?

Офлайн

#5 Май 8, 2014 15:33:01

chaotism
От:
Зарегистрирован: 2010-11-29
Сообщения: 76
Репутация: +  1  -
Профиль   Отправить e-mail  

нубские вопросы по формам

из поля модели, вообще хотел узнать как к ним обращаться.
MyModel._meta
MyModel.fieldname - нет атрибута, только методы модели
MyModel.Meta и MyModel._meta тоже не помогло



Офлайн

#6 Май 8, 2014 16:03:53

pythonlove
Зарегистрирован: 2014-04-22
Сообщения: 16
Репутация: +  4  -
Профиль   Отправить e-mail  

нубские вопросы по формам

Можно так:

 MyModel._meta.get_field_by_name('my_field')[0].max_length

Офлайн

#7 Май 8, 2014 16:31:13

chaotism
От:
Зарегистрирован: 2010-11-29
Сообщения: 76
Репутация: +  1  -
Профиль   Отправить e-mail  

нубские вопросы по формам

спасибо, помогло, не замечал у себя опечатки



Отредактировано chaotism (Май 8, 2014 16:36:19)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version