如何从请求中获取 ID。我现在提交的表格的帖子



>我正在建立一个诊所管理系统 在您添加新医生的部分中,我希望管理员能够添加医生可用的天数,因此这意味着天数字段是一个列表,但 Django 的模型中没有列表字段,所以我创建了 CharField-> 天days = models.CharField(max_length=200,null=True)然后我在表单内创建了一个多选输入字段

<select name="days" class="form-select" multiple aria-label="multiple select example">
<option value="mon">Mon</option>
<option value="sun">sun</option>
<option value="wed">wed</option>
<option value="etc">etc</option>
</select>

所以我使用此代码获取了所选数据

for i in request.POST.getlist("days"):
d= str(i)+" "+d
print(d) # result gonna be the days in string value splited by spaces  eg : mon sun wed

所以我以后可以使用split()使用它,但问题是我无法在提交时将此数据添加到表单中,因此我认为我可以保存表单数据,然后更改字段天数 诸如此类

def add_doctor(request):
form = Add_doctorForm()
if request.method == "POST":
form = Add_doctorForm(request.POST)
if form.is_valid():
form.save()
d = ""
for i in request.POST.getlist("days"):
d= str(i)+' '+d
print(d)
formdata = Doctors.objects.get(id = request.POST.get("id")
formdata.days = d

但问题是请求。POST 不包含有关 id 的任何数据,因为 id 从数据库中获取其值,因此 post 请求不知道 id 那么谁能帮助我找到解决此问题的另一种方法?

这在很大程度上取决于表单的定义方式。

如果你有ModelForm那么这应该不是问题,所以我假设你没有走这条路。

因此,在非ModelForm的情况下,我建议采用以下方法:

  • 在表格中添加隐藏输入以存储相关医生的 ID,即在表单中使用HiddenInput并在出示表格时填写医生的 ID。
  • 然后,您可以通过表格获取此表格并检索有问题的医生(您可以通过request.POST访问数据,但您可以/应该通过cleaned_data获取它,该表格在您致电is_valid()后可用)。

我现在得到了它,我不需要从请求中获取 id。发布 我可以在数据库中获取最新的id,然后+1,这样这将是当前医生的id 就这样

c_id = int(Doctors.objects.latest('id').id)+1

仅此而已 谢谢Yvesonline,你启发我思考另一种获取ID值的方法,谢谢你帮助我。

最新更新