我正在显示一个django表单,我想在它之前准备一些字段数据 传递给要渲染。在django文档中,我看到很多地方 访问表单数据的位置,但在显示之前没有设置表单数据。
有关如何执行此操作的任何想法或建议?
这是一个类似于django docs的例子。
----------- -------------- forms.py
class BookForm(ModelForm):
author = forms.CharField(max_length=100)
title = forms.CharField(max_length=3,
widget=forms.Select(choices=TITLE_CHOICES))
birth_date = forms.DateField(required=False)
----------- -------------- views.py
def author_view(request):
if request.method == 'POST':
# DO My processing...
form = BookForm()
# How can I edit, or preset my form fields here?
c = Context({
'form': form,
})
return prepCxt(request, 'book.html', c) # Wrapper for easy display
答案 0 :(得分:0)
在您的观点中,您有:
def author_view(request):
if request.method == 'POST':
# DO My processing...
form = BookForm()
# How can I edit, or preset my form fields here?
c = Context({
'form': form,
})
return prepCxt(request, 'book.html', c) # Wrapper for easy display
您应该在if:
之前移动form=BookForm()
def author_view(request):
form = BookForm()
if request.method == 'POST':
# DO My processing...
当if "POST"
部分在表单中添加一个值然后它可以被覆盖时会发生什么。
其次,如果您尝试以显示方式更改某些内容,则可能最好添加默认值/初始值:
Django set default form values:
BookForm(initial={ 'myfield': 'myval'})
如果您试图将要保存的值更改为数据库,那么您:
if form.is_valid():
myobject = form.save(commit=false)
myobject.myfield = mval
myobj.save()
form = BookForm(instance = myobjext)
还有别的吗?请更具体一点。