Python 在Django中传递POST数据中的值和表单

Python 在Django中传递POST数据中的值和表单,python,django,Python,Django,当我用HTML呈现表单时,我使用这个视图。患者id用于表示入住的患者以及姓名显示等 def Checkin(request, patient_id): patient = get_object_or_404(PatientInfo, pk=patient_id) form = forms.PatientCheckinForm() return render(request, 'patientRecords/checkin.html', {'patient': patien

当我用HTML呈现表单时,我使用这个视图。患者id用于表示入住的患者以及姓名显示等

def Checkin(request, patient_id):
    patient = get_object_or_404(PatientInfo, pk=patient_id)
    form = forms.PatientCheckinForm()
    return render(request, 'patientRecords/checkin.html', {'patient': patient, 'form':form})
当我提交作为POST方法填写的患者表单时,我仍然需要访问患者id。目前,这是接受填写表单的视图:

def CheckinSubmit(request):
if request.method == 'POST':
    form = forms.PatientCheckinForm(request.POST, request.FILES)
    if form.is_valid():
        instance = form.save(commit=False)
        instance.date_time_of_checkin = dt.now()
        instance.patient = patient.patient_id
        instance.save()
        return redirect('patientRecords/index.html')
我想将instance.patient设置为作为签入视图中患者的一部分的患者id。是否有一种方法可以将患者数据与POST方法一起传回,或者有其他方法可以做到这一点

作为参考,这里是我的模板,我使用的是ModelForm而不是form

{% block content %}

<div class="container">
  <h1>Patient Checkin</h1>
  <h2>{{patient.first_name}} {{patient.last_name}}</h2>
</div>
<div class="container">
  <form  action="{% url 'patientRecords:checkinsubmit' %}" method="POST" class="form">
    {% csrf_token %}
    {% bootstrap_form form %}
    {% buttons %}
        <button type="submit" class="btn btn-primary">Submit</button>
    {% endbuttons %}
  </form>
</div>

{% endblock %}
{%block content%}
病人登记
{{病人.名字}{{病人.姓氏}
{%csrf_令牌%}
{%bootstrap_form%}
{%buttons%}
提交
{%endbuttons%}
{%endblock%}

提前谢谢

您只需在表单中添加一个隐藏输入即可捕获患者ID:

{% block content %}

<div class="container">
  <h1>Patient Checkin</h1>
  <h2>{{patient.first_name}} {{patient.last_name}}</h2>
</div>
<div class="container">
  <form  action="{% url 'patientRecords:checkinsubmit' %}" method="POST" class="form">
    <input type="hidden" name="patient_id" value="{{patient.patient_id}}" />
    {% csrf_token %}
    {% bootstrap_form form %}
    {% buttons %}
        <button type="submit" class="btn btn-primary">Submit</button>
    {% endbuttons %}
  </form>
</div>

{% endblock %}
{%block content%}
病人登记
{{病人.名字}{{病人.姓氏}
{%csrf_令牌%}
{%bootstrap_form%}
{%buttons%}
提交
{%endbuttons%}
{%endblock%}
(注意,这假设可以从
patient
对象的
patient\u ID
属性访问患者ID。)

然后,在您的
CheckinSubmit
方法中,您可以通过
request.POST.get('patient\u id')访问该值。

或者,您的签入表单似乎在URL中加载了患者ID。在
CheckinSubmit
方法中,您应该能够通过
request.META.HTTP\u REFERER
属性访问此URL。然后,您可以解析URL(例如,使用
request.META.HTTP\u REFERER.split('/')[len(request.META.HTTP\u REFERER.split('/'))-1]
来提取患者ID。

示例

<form method="post" action = "{% url 'user_search_from_group' %}"> 
      <div class="module-option clearfix">
           <div class="input-append pull-left">
                <input type="hidden" name="groupname" value="{{ gpname }}" />
                {% csrf_token %}
                <input type="text" class="span3" placeholder="Filter by name" id="username3" name="username3" required>
                 <button type="submit" class="btn" name="submit">
                         <i class="icon-search"></i>
                 </button>
           </div>
      </div>
</form>

使用请求我们正在使用视图内部的值

越来越近!现在出现不同的错误。我得到“ValueError:无法分配”'15':“签入。患者id”必须是“PatientInfo”实例错误。“PatientInfo”是与我当前试图保存到的模型不同的模型的名称。15将作为“PatientInfo”的外键进入“签入”模型。根据错误判断,
patient
属性需要一个对象(类型为
PatientInfo
),而不是整数/ID。因此,在您的
CheckinSubmit
方法中,您需要使用ID从数据库中提取该对象进行查找,然后将其分配给
instance.patient
。例如,假设您正在将应用程序模型导入视图文件,您可以将其拉入,然后将其分配给
instance.patient
,如所以:
instance.patient=models.PatientInfo.objects.get(pk=request.POST.get('patient\u id'))
def user_search_from_group(request):
    if request.method == 'POST':
        username3 = request.POST.get('username3')
        gname = request.POST.get('groupname')