Как получить данные после выбора элемента из выпадающего меню, без перезагрузки страницы, - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь построить систему счетов-фактур, я поставил все модели и представления. Проблема, с которой я сталкиваюсь, заключается в том, что при выборе варианта из раскрывающегося списка я хочу, чтобы он извлекал все поля этого продукта из базы данных без перезагрузки , а также я хочу этот же шаг в следующей строке с другим продуктом. [Views.py] [1] [1]: https://i.stack.imgur.com/bVQhF.png

Счет. html

<!DOCTYPE html>
<html lang="en">
<head>
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
    <meta charset="UTF-8">
    <title>Entry</title>
</head>
<body>

<div class="">
  <select name="" id="select_path"
    ONCHANGE="location = this.options[this.selectedIndex].value;">
    {% for product in Products %}
     <option value="{% url 'book' product.id %}">{{ product.Name }}
     </option>
    {% endfor %}
  </select>
  {{productInfo.Name}}
</div>


</body>
</html>

Views.py

from django.http import HttpResponse,Http404,HttpResponseRedirect
from django.shortcuts import render
from django.urls import reverse
from .models import Product
# Create your views here.
def index(request):
    context={
    'Products':Product.objects.all(),
    }
    return render(request,'invoices/index.html', context)


def query(request):

    context={
    'Products':Product.objects.all(),
    }
    return render(request,'invoices/invoice.html',context)

def book(request,product_id):

    context={
    'Products':Product.objects.all(),
    'productInfo':Product.objects.get(pk=product_id)
    }
    return render(request,'invoices/invoice.html',context)

URL

from django.urls import path
from . import views


urlpatterns =[
path('',views.index,name="invoice"),
path('invoice/',views.query,name='detail'),
path('<int:product_id>/book',views.book,name='book')

]

Модели

from django.db import models

# Create your models here.
class Product(models.Model):
    id = models.AutoField(primary_key=True)
    Name=models.CharField(max_length=50)
    HSN_code= models.CharField(max_length=15,unique=True)
    Rate=models.DecimalField(max_digits=11,decimal_places=2)

    def __str__(self):
        return f" {self.id} {self.Name} {self.HSN_code} {self.Rate}"
...