Как вывести выбор из модели - PullRequest
0 голосов
/ 03 мая 2019

У меня есть модель продукта, у которой есть количество на складе, и при входе в корзину я хотел бы снять это количество.Я создал три продукта, и у каждого есть в наличии. Но для одного я создал количество 10. Затем я попытался выбрать из TypedChoiceField> выборы.Но мне нужно только одно значение для этого продукта.

from django import forms
from shop.models import Product

class CartProductForm(forms.Form):
    product = Product.objects.all()
    quantity = forms.TypedChoiceField(choices=[(i.stock, str(i.stock)) for i in product], coerce=int)
    update = forms.BooleanField(required=False, initial=False, widget=forms.HiddenInput)

enter image description here

views.py

def cart_update(request, product_id):
    cart = Cart(request)
    form = CartProductForm(request.POST)
    product = Product.objects.get(id=product_id)

    if form.is_valid():
        cleaned = form.cleaned_data
        cart.add(product=product, quantity=cleaned['quantity'], update_quantity=cleaned['update'])

    return redirect('cart:cart_show')

cart.py

def add(self, product, quantity=1, update_quantity=False):
      product_id = str(product.id)
      if product_id not in self.cart:
            self.cart[product_id] = {'quantity': 0,'price': str(product.price)}
      if update_quantity:
          self.cart[product_id]['quantity'] = quantity
      else:
          self.cart[product_id]['quantity'] += quantity
      self.save()

Я знаю, что мне нужно каким-то образом передать идентификатор продукта и использовать

class CartProductForm(forms.Form):
    product = Product.objects.get(stock=product.stock)

Помогите мне, пожалуйста, извините за мой английский

models.py

class Product(models.Model):
        category = models.ForeignKey(Category, on_delete=models.PROTECT)
        subcategory = models.ForeignKey(Subcategory, on_delete=models.PROTECT)
        kind = models.ForeignKey(Kind, on_delete=models.PROTECT)
        name = models.CharField(max_length=200, db_index=True)
        slug = models.SlugField(max_length=200, db_index=True)
        image = models.ImageField(upload_to=upload_location)
        description = models.TextField()
        price = models.IntegerField()
        stock = models.PositiveIntegerField()
        available = models.BooleanField(default=True)

        def __str__(self):
                return self.name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...