страница поиска в Джанго - PullRequest
0 голосов
/ 11 июля 2019

По сути, мне нужно создать поисковую страницу в django, в которой есть поля ввода, скажем po_no, po_date, description. Пользователь может ввести любую или все детали и нажать кнопку поиска. Следует перейти к другому HTML-шаблону и просмотреть сведения, соответствующие ему введенным данным.

po.html

  <form  method = "GET" action="{% url 'po_dtl' %}">            

            <label class="sr-only">PO NUMBER</label>
            <input type="text" name="a" class="form-control"   placeholder="PO NUMBER" value="{{request.get.a}}">
             <label class="sr-only">PO DATE</label>
            <input type="text" name="b" class="form-control" placeholder="PO DATE" value="{{request.get.b}}">
             <label class="sr-only">DESC</label>
            <input type="text" name="c" class="form-control" placeholder="DESCRIPTION" value="{{request.get.c}}">
            <label class="sr-only">APPR</label>
            <input type="text" name="d" class="form-control" placeholder="APPROVED DATE" value="{{request.get.d}}">
          <label class="sr-only">SUPP</label>
          <input type="text" name="e" class="form-control" placeholder="SUPPLIER CODE" value="{{request.get.e}}">
      <label class="sr-only">BUTTON</label>          
      <button class="btn btn-secondary btn-block mt-4" type="submit">Search</button>

     </form>

po_dtl.html

{% if search_results %}
                    {% for post in search_results %}

                    PO NO:
                      <span class="float-right">{{post.po_no}}
                      </span>

                    PO date:
           <span class="float-right">{{post.po_date|date:"F d, Y"}}</span>

                      Supplier Code:
                      <span class="float-right">{{post.sup_code}}</span>

                    <table>
                    <thead>  
                    <tr>
                      <th>Item Code</th>
                      <th>TAX</th>
                      <th>Amount</th>
                      <th>Quantity</th>
                    </tr>
                    </thread>
                    <tbody> 
                    <tr>
                      <td>{{post.item_code}}</td>
                      <td>{{post.tax}}</td>
                      <td>{{post.amt}}</td>
                      <td>{{post.qty}}</td>
                    </tr>
                    </tbody>       
                    </table>
                    {% endfor %}
                {% endif %}

views.py

def po_head(request):
    if request.method == 'GET':
        p_no = request.GET.get('a')
        date = request.GET.get('b')
        desc = request.GET.get('c')
        ap_date = request.GET.get('d')
        s_code = request.GET.get('e')

        search_results = po_detail.objects.filter(Q(po_no=p_no)|Q(po_date__iexact=date)|Q(sup_code=s_code))
        return render(request,'erp/po_dtl.html',{'search_results':search_results})
    else:
        return render(request,'erp/po.html',{})


@login_required
def po_dtl(request , po_no):
    context = {
        'posts' : po_detail.objects.all()
    }
    return render(request,'erp/po_dtl.html',context)
@login_required
def item(request):
    return render(request,'erp/item.html',{})

models.py описание взято из модели item_code, на который ссылается внешний ключ

class po_head(models.Model):
    po_no = models.IntegerField(primary_key=True)
    po_date = models.DateTimeField(default = timezone.now)
    appr_date = models.DateTimeField(default = timezone.now)

class po_detail(models.Model):
    po_no = models.IntegerField(default=None)
    po_date = models.DateTimeField(default = timezone.now)
    sup_code = models.CharField(max_length=10,default=None) 
    item_code = models.IntegerField(primary_key = True)  
    tax = models.IntegerField(default=None)
    amt = models.IntegerField(default=None)
    qty = models.IntegerField(default=None)
    po_head = models.ForeignKey('po_head', on_delete=models.CASCADE, default=None)
    class Meta:
        unique_together = (('po_no', 'item_code'),)

Я получаю ошибки типа, и идея в основном не работает. Пожалуйста, помогите!

...