Django中检索数据以填充表格

2024-06-01 20:35:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个视图,它呈现一个下拉列表,用户将在其中选择一个订单号并将其指向另一个视图,其中应该有一个表,该表填充了与该订单相关的所有数据

每个订单#都有多条相关记录-我不知道如何正确获取和显示这些数据

这就是我正在尝试的-但我只是不断地犯错误,我有一种感觉,我没有接近这个权利放在首位

更新以显示错误: “unicode”对象没有属性“\u meta” form=CreateManifestForm(request.POST,instance=referenceid)

视图.py

#rendering the dropdown
def manifest_reference_view(request):
    query_results = Orders.objects.all()
    reference_list = BlahBlah()

    context = {
        'query_results': query_results,
        'reference_list': reference_list,
    }
    return render(request, 'manifest_reference_view.html', context)

#this view should show table with all data relating to user selection
def manifest(request):
    if request.method == 'POST':

        reference = request.POST.get('Reference_Nos')
        referenceid = reference
        form = CreateManifestForm(request.POST, instance=referenceid)
        manifest = Manifests.objects.all().filter(reference__reference=referenceid)
        #order = Orders.objects.get(reference=reference)
        if form.is_valid():
            form.save()
            return redirect('display_orders')

    else:
        form = CreateManifestForm(instance=referenceid)

        return render(request, 'edit_manifest_frombrowse.html', {'form': form})

表单.py

class BlahBlah(forms.Form):
    Reference_Nos = forms.ModelChoiceField(queryset=Orders.objects.values_list('reference', flat=True).distinct(),
    empty_label=None)

class CreateManifestForm(forms.ModelForm):

    class Meta:
        cases = forms.IntegerField(widget=forms.TextInput(attrs={'placeholder': 'Enter Cases'}))
        model = Manifests
        fields = ('reference', 'cases', 'product_name', 'count', 'CNF', 'FOB')

编辑\u清单\u frombrowse.html

{% extends 'base.html' %}

{% block body %}

  <div class="container">
    <form id="create_mani_form" method="POST">

      <br>
      <br>
      <br>
      {% csrf_token %}

        <div class="column">
          <label for="form.reference" class="formlabels">Reference ID: </label><br>
          <!-- <input type="text" value="{{ reference_id }}">-->
           {{ form.reference }}
          <br>
        </div>
        <div class="description">
        <div class="column">
          <label for="form.description" class="formlabels">Description: </label>
          <br>
          {{ form.product_name}}
        </div>
        </div>
        <div class="column">
          <label for="form.cases" class="formlabels">Cases: </label>
          <br>
          {{ form.cases }}
          <br>
        </div>
        <div class="column">
          <label for="form.count" class="formlabels">Count: </label>
          <br>
          {{ form.count }}
          <br>
          <br>
        </div>
          <br>
          <br>


      <button type="submit" name="add_mani" style="border-color: #7395AE;">Add Line</button>
    </form>


    <br>
    <h4>Manifest</h4>

    <div class="table-responsive">
    <!--<table  id="manifest_table" class="table table-striped table-bordered table-sm " cellspacing="0"-->
    <table class="table table-striped table-bordered manifest_table" cellspacing="0" style="width="100%">

      <thead>
        <tr>
          <th style="width:2%;"</th>
          <th style="width:10%;">Ref ID</th>
          <th style="width:10%;">Cases</th>
          <th style="width:60%;">Description</th>
          <th style="width:10%;">Count</th>
        </tr>
      </thead>

      <tbody>

        {% for manifests in manifests %}

        <tr>
          <td>{{ manifests.reference }}</td>
          <td>{{ manifests.cases }}</td>
          <td>{{ manifests.product_name}}</td>
          <td>{{ manifests.count}}</td>
        </tr>

        {% endfor %}

      </tbody>
    </table>
    </div>
    <div class="text-center">
      <a href="{% url 'display_orders' %}" type="submit" class="btn btn-primary" name="button" align="right" style="color: #7395AE; border-color: #7395AE; background-color: #FFF;">Subit Manifest</a>
    </div>



{% endblock %}

无论用户在Reference\u Nos下拉列表中选择什么,都应该用于从清单模型中获取与该选择相关的数据,然后将其显示在表中


Tags: brdivformstylerequesttablewidthpost