【发布时间】:2021-06-19 11:03:49
【问题描述】:
通过标准的 HTML POST 表单,我可以使用以下代码成功更新现有记录,但情况是我需要在将表单数据保存到数据库之前更改一个数据字段。在 Django 网站上,他们说创建一个新的表单实例并更改字段,但无论出于何种原因,字段数据在 save() 操作中都没有更改。
class ProvisioningDetails(View):
def post(self, request, provisioning_ptr_id, terminal_id, site_id):
form = ProvisioningForm(request.POST)
if form.is_valid():
a = Provisioning.objects.get(provisioning_ptr_id=provisioning_ptr_id)
f = ProvisioningForm(request.POST, instance=a)
f.str1 = "some new data"
f.save()
return redirect(
"provisionings_show_view", site_id, terminal_id, provisioning_ptr_id
)
class ProvisioningForm(forms.ModelForm):
class Meta:
model = Provisioning
fields = [
"id",
"fixedip",
"str1",
"str2",
"str3",
"ip",
]
def clean(self,):
cleaned_data = super(ProvisioningForm, self).clean()
我也试过这个,它确实改变了表单中的数据,但没有改变数据库中的数据:
class ProvisioningDetails(View):
def post(self, request, provisioning_ptr_id, terminal_id, site_id):
form = ProvisioningForm(request.POST)
if form.is_valid():
a = Provisioning.objects.get(provisioning_ptr_id=provisioning_ptr_id)
new = ProvisioningForm(request.POST)
new.str1 = "some new data"
f = ProvisioningForm(new, instance=a)
f.save()
return redirect(
"provisionings_show_view", site_id, terminal_id, provisioning_ptr_id
)
任何人都知道我如何将 str1 = "some new data" 保存在数据库中
【问题讨论】:
标签: python django database post modelform