2012-04-19 12 views
0

私はモデルのフィールドを隠しているのですが、デフォルト値が入っていて、隠されているように変更することはできません(常に変数になるデフォルトのフィールドを持つより安全な方法はありますか?私はそれが唯一の実際の入力フィールドを隠し、ラベルはちょうどので、私はちょうど自由に浮かぶラベルを取り除くことができる方法があるウェブサイトのHTMLに自由になることができますModelFormでラベルを削除しますか?

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

を使うのか?現在ログインしているユーザーのユーザー名をモデルに送信する方が良いでしょうか?

今私はこのようなフォームにinitalを使用しています:

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

はそのsecureishありますか?

答えて

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

ありがとうございます。私は隠されたフォームは非常に安全ではないと思ったが、私はコミット= falseを知らなかった。助けてくれてありがとう – city

関連する問題