Python Django:将URL请求参数保存到表单中
我正在使用一个表单将数据保存到其中 models.py 我正在从URL传递参数Patient IdPython Django:将URL请求参数保存到表单中,python,django,Python,Django,我正在使用一个表单将数据保存到其中 models.py 我正在从URL传递参数Patient Id url(r'^addprescription/(?P<patid>\d+)/$', views.viewtemplate forms.py class templateform(forms.ModelForm): class Meta: model = presciptiontemplates fields = ['template', 'draft'] wi
url(r'^addprescription/(?P<patid>\d+)/$', views.viewtemplate
forms.py
class templateform(forms.ModelForm):
class Meta:
model = presciptiontemplates
fields = ['template', 'draft']
widgets = {
'template': TinyMCE(),
'draft': forms.CheckboxInput()
}
labels = {
"patientid": _("Patient ID"),
}
def __init__(self, *args, **kwargs):
super(ThatForm, self).__init__(*args, **kwargs)
self.fields['template'].required = True
这给了我一个错误
[Microsoft][SQL Server本机客户端11.0][SQL Server]无法插入
“patientid”列中的值为NULL
要将userid值添加到新对象中,可以使用ModelForm 只需使templateform继承自ModelForm而不是Form类
class templateform(forms.ModelForm):
class Meta:
model = presciptiontemplates
现在,在视图中,您可以执行以下操作:
form = templateform(request.POST or None, request.FILES or None)
if form.is_valid():
instance = form.save(commit=False)
instance.patientid = userid
instance.save()
要将userid值添加到新对象中,可以使用ModelForm 只需使templateform继承自ModelForm而不是Form类
class templateform(forms.ModelForm):
class Meta:
model = presciptiontemplates
现在,在视图中,您可以执行以下操作:
form = templateform(request.POST or None, request.FILES or None)
if form.is_valid():
instance = form.save(commit=False)
instance.patientid = userid
instance.save()
假设templateform是一个模型表单
您可以在save方法中使用commit=False参数,然后使用所需参数再次保存对象
要根据代码进行更改的短代码段
...
if request.method == "POST":
if form.is_valid():
obj = form.save(commit=False)
obj.patientid = userid
obj.save()
return redirect('index')
else:
...
假设templateform是一个模型表单
您可以在save方法中使用commit=False参数,然后使用所需参数再次保存对象
要根据代码进行更改的短代码段
...
if request.method == "POST":
if form.is_valid():
obj = form.save(commit=False)
obj.patientid = userid
obj.save()
return redirect('index')
else:
...
问题出在这一行:
presciptiontemplates.patientid = userid
在您的模型中,patientid是患者模型的外键,因此它需要一个患者模型对象,而不是患者id作为patid。
因此,首先获取Patient对象,然后将其分配给patientid,如下所示:
def viewtemplate(request, patid):
patient = Patient.object.get(id=patid)
form = templateform(request.POST)
if request.method == "POST":
if form.is_valid():
form = form.save(commit=False)
form.patientid = patient
form.save()
return redirect('index')
else:
form = templateform()
return render(request, 'presapp/prescription.html', {'form': form})
问题出在这一行:
presciptiontemplates.patientid = userid
在您的模型中,patientid是患者模型的外键,因此它需要一个患者模型对象,而不是患者id作为patid。
因此,首先获取Patient对象,然后将其分配给patientid,如下所示:
def viewtemplate(request, patid):
patient = Patient.object.get(id=patid)
form = templateform(request.POST)
if request.method == "POST":
if form.is_valid():
form = form.save(commit=False)
form.patientid = patient
form.save()
return redirect('index')
else:
form = templateform()
return render(request, 'presapp/prescription.html', {'form': form})
这个问题有很多问题。你的模型在哪里。那压痕呢。什么是PresiptionTemplates,它似乎没有定义?显示prescription.html并告诉我们什么是PresiptionTemplates?添加了modelform,PresiptionTemplates是我打算从富文本编辑器中保存数据的模型,并对错误进行完整的回溯。错误来自forms.py或此行presiptiontemplates.patientid=userid?此错误是由于form.save In views.pylots导致的,原因是该问题存在错误。你的模型在哪里。那压痕呢。什么是PresiptionTemplates,它似乎没有定义?显示prescription.html并告诉我们什么是PresiptionTemplates?添加了modelform,PresiptionTemplates是我打算从富文本编辑器中保存数据的模型,并对错误进行完整的回溯。错误来自forms.py或此行presiptiontemplates.patientid=userid?错误是由于form.save In views.pyIt给我一个错误int参数必须是字符串、类似字节的对象或数字,而不是“Patient”suggestions@RomilBahukhandi错误在代码的哪一行?@RomilBahukhandi正在更新我的答案。请尝试将form.patientid=patid替换为patient对象。错误跟踪为form.save Im使用MSSQL作为后端使用Pyodbc azure,这可能是问题吗?使用这一行还可以form=form.savecommit=False,则错误应该消失。它给我一个error int参数必须是字符串、类似字节的对象或数字,不是“耐心”的suggestions@RomilBahukhandi错误在代码的哪一行?@RomilBahukhandi正在更新我的答案。请尝试将form.patientid=patid替换为patient对象。错误追溯到form.save Im,使用MSSQL作为后端使用Pyodbc azure,这可能是问题所在。使用此行还可以使用form=form.savecommit=False,则错误应该消失。