Как отключить поле из представления на Django?

Я пытаюсь отключить его, но я использую один и тот же form для двух разных представлений, и в одном представлении мне нужно отключить или сделать доступным для чтения поле, как я могу этого достичь?

Я достиг этого на VIEWS.py

obj = ModelUpdate.objects.first()
field_object = ModelUpdate._meta.get_field('myfield')
field_value = getattr(obj, field_object.attname)

Предполагаю, что вы хотите повторно использовать форму в двух отдельных представлениях, но чтобы в одной версии было поле только для чтения? Если так, то вы можете либо иметь две версии формы в вашем файле forms.py, если код формы не особенно длинный, либо добавить какую-то проверку в def __init__ формы, чтобы установить поле как readonly при определенном условии:

my_field = forms.CharField(widget=forms.TextInput(attrs={'readonly':'readonly'}))

Вы можете использовать наследование.

class AbstractForm(forms.Form):
    # General fields

class AllEditableForm(AbstractForm):
    # The field which we will allow to edit
    target_field = forms.XXXXField()
    
class OneFieldReadOnly(AbstractForm):
    # Make the field read only
    target_field = forms.XXXXField(disabled=True)
Вернуться на верх