2012-04-19 3 views
0

Итак, я пытаюсь иметь поле в своей модели, поскольку они скрыты, но содержат значения по умолчанию и не могут быть изменены, поэтому они скрыты (есть ли более безопасные способы иметь поля по умолчанию, которые всегда будут переменной?) В любом случае, когда я используюИзбавиться от ярлыка в ModelForm?

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

это только скрывает реальное поле ввода и позволяет ярлык быть свободным от HTML веб-сайта, так есть ли способ, что я могу избавиться от лейбла, который просто свободно плавает вокруг? и есть ли лучшие способы отправки имени пользователя текущего пользователя в модель?

Сейчас я использую щёток в форме, как это:

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

что secureish?

ответ

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() 
+0

спасибо. Я понял, что скрытые формы не очень безопасны, но я не знал о commit = false. Спасибо за помощь – city

Смежные вопросы