我正在使用 Django 的用户模型。
如何使用 Django ModelForm 来预填充模板中的值?我知道我必须使用该表单的实例,但是下面我哪里出错了:
模型.py:
class Site(models.Model):
user = models.ForeignKey(User, )
site_name = models.CharField(max_length=128, blank=False, null=False)
形式.py:
class SiteForm(forms.ModelForm):
class Meta:
model = Site
fields = '__all__'
视图.py:
def settings(request):
site_profile = Site.objects.get(user=request.user)
if request.method == "POST":
form = SiteForm( instance=site_profile )
if form.is_valid():
form.save()
return redirect('dashboard_home')
else:
form = SiteForm()
return render(request, "dashboard/settings.html", {'form': form })
此代码返回的页面没有错误,但不会使用数据库中的值预填充表单字段。
我只能假设instance
没有正确加载?
def settings(request):
if request.method == "POST":
form = SiteForm(request.POST, instance=request.user.site_profile)
if form.is_valid():
form.save()
return redirect('dashboard_home')
site_profile = Site.objects.get(user=request.user)
form = SiteForm(instance=site_profile)
return render(request, "dashboard/settings.html", {'form': form })
你的压痕已关闭,你从未通过site_profile
到表单来填充它。如果发生POST
请求您不想传递旧版本site_profile
到表格。我假设您想要用户在模板中填写的新值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)