2014-11-10 3 views
1

Есть ли способ настроить только метку полей формы без указания типа поля?django forms: настраивать только метки

Например, у меня есть следующая модель для привилегий пользователя по обработке документов:

class Privilege(models.Model): 
    user = models.OneToOneField(User) 
    privCreate = models.BooleanField(default=False) 
    privEdit = models.BooleanField(default=False) 
    privDelete = models.BooleanField(default=False) 
    ... 

И у меня есть следующий вид:

class PrivilegeForm(forms.ModelForm): 
    privCreate = forms.BooleanField(label='Create a document') 
    privEdit = forms.BooleanField(label='Edit a document') 
    privDelete = forms.BooleanField(label='Delete a document') 
    ... 

    class Meta: 
     model = Privilege 
     fields = ('privCreate', 'privEdit', 'privDelete', ...) 

Есть много полей, и это кажется, нарушает DRY. Как я могу настроить только метки без указания forms.BooleanField, если они такие же, как в моделях?

ответ

1

Вы можете установить метки в __init__() с помощью .fields:

class PrivilegeForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(PrivilegeForm, self).__init__(*args, **kwargs) 

     self.fields['privCreate'].label = 'Create a document' 
     ... 
+0

Отлично! Большое спасибо. –