Django Показать выбранные данные из базы данных на основе пользовательского ввода в HTML - PullRequest
0 голосов
/ 03 мая 2019

Я новичок.Я создаю ресторанную систему с помощью Django.Я хочу отобразить данные (номер таблицы, позиция и количество продуктов), которые были вставлены в базу данных.Я хочу показать данные, основанные на случайном идентификаторе, который был сгенерирован, когда клиент делал заказ еды.Следовательно, я не знаю, как это сделать.

Кто-нибудь может мне помочь, пожалуйста

Я пробовал эти коды, но он показывает только кнопку возврата.Я не могу получить данные на основе случайного идентификатора из базы данных

. Вот мой файл models.py

class OrderItem(models.Model):
    Table_No = models.IntegerField(blank=False)
    Item = models.TextField()
    Qty = models.IntegerField(blank=False)
    Price = models.TextField()
    Status = models.TextField(max_length=100, null=True)
    OrderId = models.TextField(max_length=100, null=True)

мой HTML-файл:

<form action="" method="post">
    {% csrf_token %}
    <!--<input type="Submit" name="submit" value="See Order"/>-->
            {% for order in so1 %}
            <table width="800">
                <tr>
                    <th width="800">Table Number</th>
                    <th width="800">Item</th>
                    <th width="800">Quantity</th>
                    <th width="800">Status</th>
                    <th width="800">Order Id</th>
                </tr>
                <tr>
                    <td width="800">{{ order.Table_No }}</td>
                    <td width="800">{{ order.Item }}</td>
                    <td width="800">{{ order.Qty }}</td>
                    <td width="800">{{ order.Status }}</td>
                    <td width="800">{{ order.OrderId }}</td>
                </tr>
            {% endfor %}
    <input action="action" onclick="window.history.go(-1); return false;" type="button" value="Back" />

мой взгляд:

def see_order(request):
    if request.method == "POST":
        Table_No = request.POST.get("Table_No")
        Item = request.POST.get("Item")
        Qty = request.POST.get("Qty")
        Status = request.POST.get("Status")
        OrderId = request.POST.get("OrderId")
        track_order = request.POST.get('textfield', None)

        if(OrderItem.objects.get(OrderId)):
            if(OrderId==OrderId): 
                try:
                    summary = OrderItem.objects.get(OrderId=track_order)
                    so1 = OrderItem.objects.filter(Table_No=Table_No)
                    so = OrderItem.objects.filter(Item=Item)
                    so = OrderItem.objects.filter(Qty=Qty)
                    so = OrderItem.objects.filter(Status=Status)
                    so = OrderItem.objects.filter(OrderId=OrderId)
                    html = ("<H1>%s</H1>", summary)
                    return render(request, 'restaurants/see_order.html', {'so1': so1 , 'so': so})
                except OrderItem.DoesNotExist:
                    return HttpResponse("no such user")
    else:
        return render(request, 'restaurants/customer_page.html')

Я ожидаю, что результат покажет номер таблицы, элемент и количество, когда я введу случайный идентификатор.Но он ничего не показывает, кроме кнопки «назад».

1 Ответ

0 голосов
/ 03 мая 2019

Ваша логика не имеет смысла.

Вы делаете много запросов, но игнорируете их результат - вы либо вообще ничего не делаете с переменной, либо перезаписываете существующую переменную результатом следующего запроса.

Например, вы получаете summary, по какой-то причине заключаете его в теги "h1" (почему вы не делаете этого в шаблоне), чтобы получить переменную с именем html, а затем полностью игнорируете эта переменная .

В остальном вы получаете то, что называется so, отфильтровывая по Item, затем перезаписывая , используя совершенно другой фильтр, основанный на Qty, затем Status и т. Д.

Не говоря уже о том, что if(OrderId==OrderId) совершенно бессмысленно.

Вы должны удалить всю бесполезную логику. Поскольку вы хотите фильтровать по OrderId, вы должны просто сделать это и вернуть данные в базу данных.

if request.method == "POST":
    OrderId = request.POST.get("OrderId")
    so = OrderItem.objects.filter(OrderId=OrderId)
    return render(request, 'restaurants/see_order.html', {'so': so})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...