gpt4 book ai didi

python - Django:将 URL 请求参数保存到表单中

转载 作者:太空宇宙 更新时间:2023-11-04 10:04:59 25 4
gpt4 key购买 nike

我正在使用表单将数据保存到其中。

模型.py

class presciptiontemplates(models.Model):
templateid = models.AutoField(primary_key=True)
template = tinymce_models.HTMLField()
draft = models.BooleanField(default=False)
savedate = models.DateTimeField(default=datetime.now())
patientid = models.ForeignKey('Patient')

我从 URL 传递参数 Patient Id。

url(r'^addprescription/(?P<patid>\d+)/$', views.viewtemplate

如何将这个参数保存到表单中

views.py

def viewtemplate(request, patid):
userid = patid
form = templateform(request.POST)
if request.method == "POST":
if form.is_valid():
presciptiontemplates.patientid = userid
form.save()
return redirect('index')
else:
form = templateform()
return render(request, 'presapp/prescription.html', {'form': form})

表单.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 Native Client 11.0][SQL Server]Cannot insert the value NULL into column 'patientid'

Django  1.10.4
Python 3.5.2
Windows 7

最佳答案

问题出在这一行:

presciptiontemplates.patientid = userid

在您的模型中,patientidPatient 模型的外键,因此它需要一个 Patient 模型对象,而不是 中的患者 ID规律的。所以首先获取 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})

关于python - Django:将 URL 请求参数保存到表单中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41478602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com