【问题标题】:how can I get an id from request.POST of the form that I'm submitting now如何从我现在提交的表单的 request.POST 中获取 id
【发布时间】:2021-03-28 12:16:04
【问题描述】:

我正在构建一个诊所管理系统 在添加新医生的部分,我希望管理员能够添加医生可用的天数,这意味着天数字段是一个列表,但 Django 中没有列表字段模型,所以我创建了 CharField-> days 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

但问题是 request.POST 不包含任何关于 id 的数据因为 id 从数据库中获取它的值,所以 post 请求不知道 id 那么谁能帮我找到另一种方法来解决这个问题?

【问题讨论】:

    标签: python django django-models django-views django-forms


    【解决方案1】:

    这在很大程度上取决于您的表单是如何定义的。

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

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

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

    【讨论】:

    • 我试过了,但问题是我不知道如何给医生 ID,如果条目从数据库中获取 ID,我怎么能得到它,所以需要导入条目在添加天值之前,这就是为什么我想在保存条目后获取条目的 ID,然后将天数作为更新添加到它
    【解决方案2】:

    我现在知道了,我不需要从 request.POST 中获取 id 我可以在数据库中获取最新的 id,然后 +1,这将是当前医生的 id 就这样

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

    就是这样 谢谢 Yvesonline,你启发了我思考另一种获取 id 值的方法,谢谢你的帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-20
      • 2021-05-06
      • 1970-01-01
      • 2019-04-04
      • 1970-01-01
      • 2012-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多