У меня нет возможности выбрать список товаров в форме заказа

введите здесь описание изображенияModels.py from django.db import models from re import I from django.utils import timezone from django.dispatch import receiver from more_itertools import quantify from django.db.models import Sum

# Create your models here.

CHOICES = (
    ("1", "Available"),
    ("2", "Not Available")
)

class Brand(models.Model):
    name = models.CharField(max_length=255)
    status = models.CharField(max_length=10, choices=CHOICES)

    def __str__(self):
        return self.name

class Category(models.Model):
    name = models.CharField(max_length=255)
    status = models.CharField(max_length=10, choices=CHOICES)

    def __str__(self):
        return self.name

class Product(models.Model):
    brand = models.ForeignKey(Brand, on_delete=models.CASCADE)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)

    name = models.CharField(max_length=255)
    code = models.CharField(max_length=10)
    #image = models.ImageField(upload_to="media/product/images/")
    quantity = models.IntegerField()
    rate = models.FloatField(max_length=100)
    status = models.CharField(max_length=10, choices=CHOICES)

    def __str__(self):
        return self.name

class Order(models.Model):
    date = models.DateTimeField(auto_now_add=True)
    sub_total = models.FloatField(max_length=100)
    vat = models.FloatField(max_length=100)
    total_amount = models.FloatField(max_length=100)
    discount = models.FloatField(max_length=100)
    grand_total = models.FloatField(max_length=100)
    paid = models.FloatField(max_length=100)
    due = models.FloatField(max_length=100)
    payment_type = models.CharField(max_length=100)
    payment_status = models.IntegerField()
    status = models.IntegerField()

class OrderItem(models.Model):
    order_id = models.ForeignKey(Order, on_delete=models.CASCADE)
    product_id = models.ForeignKey(Product, on_delete=models.CASCADE)

    quantity = models.IntegerField()
    rate = models.FloatField(max_length=100)
    total = models.FloatField(max_length=100)
    status = models.IntegerField()

views.py

order.html Если я выбираю товар в этой форме заказа, должен появиться список товаров. Но список не появляется. {% extends 'modules/base.html' %} {% load static %}

Добро пожаловать на StackOverflow.

Не совсем понял ваш вопрос, но вы получите идею по следующему коду:

<select id="" class="" name="">
    {% for i in Product %}
    <option value="{{ i.name }}">
        {{i.name }}
    </option>
    {% endfor %}
</select>

По сути, вам нужно использовать jinja html и цикл с данными/моделью (здесь Product), которая предоставляется из view.py(function), а затем вы можете получить доступ к каждому столбцу модели (здесь name).

Надеюсь, это вам поможет.

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

посетите эту ссылку, чтобы увидеть, как сделать сериализатор docs

После того как вы создали свой сериализатор и, допустим, назвали его ProductSerializer, вы добавляете приведенную ниже строку в то место, которое передает данные на экран страницы заказа во фронтенде. Приведенная ниже строка сериализует ваш необработанный набор запросов и передает его во фронтенд для использования.

products = Product.objects.all()
products = ProductSerializer(cart, many=True)
context = {"products": products}

Затем во фронтенде вы можете получить доступ к этому и выполнить цикл следующим образом:

<select id="" class="" name="">
  {% for product in products %}
  <option value="{{ product.name }}">
      {{product.name }}
  </option>
  {% endfor %}
</select>
Вернуться на верх