【发布时间】:2013-07-07 05:46:01
【问题描述】:
views.py
@login_required
@user_passes_test(lambda u: u.is_superuser)
def date_format(request):
save_msg = ''
user = request.user
try:
settings = Settings.objects.get(user=user.id)
settingsForm = SettingsForm(instance=settings)
except:
settings = None
settingsForm = SettingsForm(initial={'date_format':0, 'time_format':0})
if request.method == 'POST':
settingsForm = SettingsForm(request.POST, instance=settings)
if settingsForm.is_valid():
settings = settingsForm.save(commit=False)
settings.user = user
settings.save()
save_msg = 'Date format has been updated.'
return render(request,'setting/date_format.html',
{
'about_menu': True,
'date_tab':True,
'SettingsForm':settingsForm,
'save_msg': save_msg,
})
models.py
class Settings(models.Model):
user = models.ForeignKey(User, null=True)
date_format = models.BooleanField('Date format', default=False)
time_format = models.BooleanField('Time format', default=False)
is_contactlist_active = models.BooleanField('Contacts', default=True)
对于初始值,显示默认格式。但是,如果我将该值保存到数据库,则值正在保存,但未显示所选格式(表单实例)。
【问题讨论】:
-
你确定这个视图代码有效吗?
-
是的,它正在保存值问题是,表单没有保存值,总是显示空表单
-
你还在使用旧的 render_to_response 吗?渲染快捷方式看起来更干净了。
-
@christophe31,替换为“render”问题仍然是他们的。
-
我的猜测是,您的代码正在触及
except块,然后settingsForm = SettingsForm(request.POST, instance=settings)评估为settingsForm = SettingsForm(request.POST, instance=None),因此出现了问题。另外,看起来你的视图需要一个login_required装饰器
标签: django django-models django-forms django-templates django-views