python django - 장고 양식 필드를 숨겨진 필드로 변경하십시오.




form validation (5)

사용자 정의 템플릿이 있고보기가있는 경우 필드를 제외하고 {{ modelform.instance.field }} 를 사용하여 값을 얻을 수 있습니다.

또한보기에서 사용하는 것을 선호 할 수 있습니다.

form.fields['field_name'].widget = forms.HiddenInput()

하지만 게시물에 대한 저장 방법을 보호 할 지 확신하지 못합니다.

희망이 도움이됩니다.

RegexField (정상적인 텍스트 입력 필드와 매우 유사합니다) 장고 양식이 있습니다. 필자는 특정 조건 하에서 사용자에게이 사실을 숨기고 양식을 최대한 유사하게 유지하려고합니다.

이 필드를 HiddenInput 필드로 바꾸는 가장 좋은 방법은 무엇입니까? form['fieldname'].field.widget.attr['readonly'] = 'readonly'form.initial['fieldname'] = 'mydesiredvalue' 원하는 초기 값을 설정할 수 있습니다. form.initial['fieldname'] = 'mydesiredvalue' . 그러나 위젯의 형식은 변경되지 않습니다.

이 필드를 <input type="hidden" 필드로 만드는 가장 / 가장 장고하지 않은 / 가장 해킹 된 방법은 무엇입니까?


또한 유용 할 수 있습니다 : {{ form.field.as_hidden }}


첫째, 사용자가 데이터를 수정하지 못하도록하면 단순히 필드를 제외하는 것이 더 깨끗해 보입니다. 숨겨진 필드로 포함 시키면 더 많은 데이터를 전송하여 악의적 인 사용자가 원하지 않을 때 수정할 수 있습니다. 필드를 포함하지만 숨길만한 충분한 이유가있는 경우 키워드 arg를 modelform의 생성자에 전달할 수 있습니다. 아마 이것과 같은 것 :

class MyModelForm(forms.ModelForm):
    class Meta:
        model = MyModel
    def __init__(self, *args, **kwargs):
        from django.forms.widgets import HiddenInput
        hide_condition = kwargs.pop('hide_condition',None)
        super(MyModelForm, self).__init__(*args, **kwargs)
        if hide_condition:
            self.fields['fieldname'].widget = HiddenInput()
            # or alternately:  del self.fields['fieldname']  to remove it from the form altogether.

그런 다음 당신의 견해에서 :

form = MyModelForm(hide_condition=True)

뷰에서 모델 폼의 내부를 수정하는 방법을 선호하지만, 맛의 문제입니다.


나를 위해 일한 옵션은 원래 형식으로 필드를 다음과 같이 정의합니다.

forms.CharField(widget = forms.HiddenInput(), required = False)

그런 다음 새로운 클래스에서 재정의하면 해당 위치가 유지됩니다.


나는 그것이 서버에 문제라고 생각한다. 각 요청에 대해 새로운 쿠키를 설정한다.







python html django django-forms