0

したがって、モデルにフィールドを非表示にしようとしていますが、デフォルト値が含まれており、変更できないため、非表示になっています(常に変数になるデフォルトフィールドを持つより安全な方法はありますか?)

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

実際の入力フィールドを非表示にするだけで、ウェブサイトの html でラベルを自由にできるので、自由に浮かんでいるラベルを取り除く方法はありますか? 現在ログインしているユーザーのユーザー名をモデルに送信するより良い方法はありますか?

現在、次のようなフォームで inital を使用しています。

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

それは安全ですか?

4

1 に答える 1

4

ユーザーがフォーム フィールドを編集する必要がない場合は、フォーム フィールドをモデル フォームに含めない方がよいでしょう。非表示のフォーム入力であっても、ユーザーが操作できます。

それを削除するには、モデル フォームのメタ クラスの除外タプルに追加するだけです。

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

次に、usernameフォームを送信した後に現在のユーザーに設定するには、次のコードを使用してかどうかを確認しますform.is_valid()

mymodel = form.save(commit=False)
mymodel.username = request.user
mymodel.save()
于 2012-04-19T19:45:51.373 に答える