2015-03-07 2 views
0

Я хотел бы иметь поля формы Django оказывают как:Как добавить необходимый атрибут в Django поля формы

<input type="text" name="username" required> 

, но когда я пытаюсь username.widget.attrs['required'] = '' я получаю что-то вроде:

<input type="text" name="username" required=""> 

ли есть способ, в котором автономные атрибуты HTML5, такие как required, могут быть показаны в полученной форме HTML?

Я использую Django 1.6 на Python 2.6, для чего это стоит.

ответ

1

@mariodev правильно. Если вы хотите более элегантный способ сделать это, обратитесь к https://stackoverflow.com/a/37738828/2812260 (соответствующая часть, скопированная ниже):

Если вы действительно хотите написать элегантный, СУХОЙ код, вы должны создать класс базовой формы, который динамически ищет все необходимые вам поля и изменяет их виджета необходимый атрибут для вас (вы можете назвать его как угодно, но «BaseForm» кажется, склонны):

from django.forms import ModelForm 

class BaseForm(ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(BaseForm, self).__init__(*args, **kwargs) 
     for bound_field in self: 
      if hasattr(bound_field, "field") and bound_field.field.required: 
       bound_field.field.widget.attrs["required"] = "required" 

и тогда есть все ваши объекты формы происходят от него:

class UserForm(BaseForm): 
    class Meta: 
     model = User 
     fields = [] 

    first_name = forms.CharField(required=True) 
    last_name = forms.CharField(required=True) 
    email = forms.EmailField(required=True, max_length=100) 
Смежные вопросы