Отключите поле в формах Django, не извлекайте исходное значение

#django #django-views #django-forms #django-templates

Вопрос:

Я пытаюсь отключить ввод поля для обновления с моего view

 class FoodListView(FormListView):
form_class = forms.FoodForm
context_object_name = "foods"

def get_queryset(self):
    return Food.objects.all()

def get_create_form(self):
    form = super().get_create_form()
    form.fields["is_active"].initial = True
    form.fields["is_active"].disabled = True

    return form

def get_update_form(self, obj):
    form = super().get_update_form(obj)
    form.fields["is_active"].disabled = True
    return form

class FoodUpdateView(BaseUpdateView):
form_class = forms.FoodForm

def get_queryset(self):
    return Food.objects.all()

def form_valid(self, form):
    instance_form = self.form_class(self.get_object(), instance=self.get_object())
    return super().form_valid(form)
 

Это моя форма

 class FoodForm(forms.ModelForm):
    class Meta:
        model = Food
        fields = ("name", "image", "price", "desc", "is_active")
 

Но когда я обновляю, он не сохраняет исходное значение активного статуса объекта, подлежащего обновлению.

Я тоже пытался form.fields["is_active"].widget.attrs['disabled'] = 'disabled' , но это все равно не сохраняет ценности.

Есть ли какой-либо способ отключить его, но при обновлении он сохранит исходное значение этого конкретного поля? Спасибо!

Комментарии:

1. Можете ли вы добавить свою форму и представление к вопросу?

2. Не могли бы вы, пожалуйста, предоставить более подробную информацию? С какой точки зрения вы это используете?

3. Я уже обновил детали. Спасибо!

4. Это FoodListView или FoodUpdateView то, с чем у вас возникли проблемы? В FoodUpdateView.form_valid вы дважды передаете экземпляр классу формы?

5. Отключенные поля не будут отображаться в запросе, вы могли бы попробовать вместо этого скрыть поле?