2012-04-19 3 views
0

그래서 내 모델에 필드가 숨겨져 있지만 기본 값이 포함되어 있으므로 변경할 수 없습니다 (변수가 항상있는 기본 필드를 갖는 더 안전한 방법이 있습니까?) 어쨌든 나는 그것은 단지 실제 입력 필드를 숨기고 레이블이 너무 난 그냥 자유롭게 떠 라벨을 제거 할 수있는 방법이 웹 사이트의 HTML에 무료로 할 수 있습니다ModelForm에서 레이블을 제거 하시겠습니까?

username = forms.CharField(widget=forms.HiddenInput()) 

를 사용할 수 있습니까? 현재 로그인 한 사용자의 사용자 이름을 모델에 제출하는 더 좋은 방법이 있습니까?

이 지금 나는이 같은 양식에 inital을 사용하고 있습니다 : 그 secureish는

USER=request.user 
ref_create = CashtextsForm(initial={'username': USER}) 

입니까?

답변

4

사용자가 양식 필드를 편집 할 필요가없는 경우 사용자가 모델 양식에 포함시키지 않는 것이 훨씬 더 좋습니다. 숨겨진 양식 입력도 사용자가 조작 할 수 있습니다. 그들은 양식을 제출 한 후, 당신이 사용하는 것이 현재 사용자에게 username을 설정, 그리고

class MyForm(forms.ModelForm): 
    class Meta: 
     model = MyModel 
     exclude = ('username',) 

:

은 모델 형태의 메타 클래스에서 제외 튜플에 추가, 제거하려면 다음 코드를 확인한 후 form.is_valid() :

mymodel = form.save(commit=False) 
mymodel.username = request.user 
mymodel.save() 
+0

감사합니다. 나는 숨겨진 양식이 매우 안전하지 않다고 생각했지만 나는 commit = false를 알지 못했습니다. 도와 주셔서 감사합니다 – city

관련 문제