【发布时间】:2016-11-08 03:46:24
【问题描述】:
我想将 ModelForm 的更改值保存到数据库。如果我是对的,即使我遵循此文档,我也会遇到问题,初始值是可能的:Documentation- providing initial values
models.py:
class Settings(models.Model):
url = models.URLField(max_length=100, default='https://website.com')
maxCount = models.SmallIntegerField(default=30)
views.py:
def Settings(request):
settingsObj = Settings.objects.get(id=1)
form = SettingsForm(initial={'url': settingsObj.url, 'maxCount':settingsObj.maxCount}, instance=settingsObj)
if form.is_valid():
form.save()
forms.py:
class SettingsForm(forms.ModelForm):
class Meta:
model = Settings
fields = ['url', 'maxCount']
模板
<form class="form-horizontal" role="form" method="POST">{% csrf_token %}
<div class="form-group">
<div class="col-sm-offset-1 col-sm-6">
{{ form.as_p }}
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-1 col-sm-6">
<button type="submit" class="btn btn-primary btn-lg btn-block">Accept</button>
</div>
</div>
</form>
当前表单显示数据库中的当前值,但不保存更改的数据。 form.is_valid() 返回 True,但 form.save() 似乎什么也没做。
【问题讨论】:
-
我没有发现任何问题
-
当我在“form = SettingsForm() 调用表单时删除“request.POST”时会显示值,但如果我现在更改字段值,它们不会保存到数据库中.
-
我在您的
form标签中看不到action属性。 -
@YashTewari 我不希望用户被重定向离开当前站点。这不是问题。现在我可以看到表单呈现时的值,但 ModelForm 没有保存更改的数据。
-
只需pointing this out 以确保这不是您的问题背后的原因。可能不是。
标签: python django django-models django-forms