Я Django новичок, и я столкнулся с проблемой, которую я не совсем уверен, как решить. Я создаю сайт электронной коммерции для практики. У меня есть две основные модели: Товар, Товар. Где продукт имеет значение - память, цвет, код, доступность и т. Д. c. Элемент является оберткой для нескольких продуктов, поэтому пользователь может просматривать несколько продуктов, упакованных в один.
, то есть:
Продукты: мобильный телефон 128 ГБ, белый; Мобильный телефон, 64 ГБ черного; ...
Элемент: Мобильный телефон (с белыми 128 ГБ и черными "указателями" 64 ГБ)
Так как мой ItemDetailView (DetailView) я показываю пользователю Предмет, может, конечно, показать все возможные цвета и варианты памяти. Но я не могу понять, как на самом деле после того, как пользователь выбирает, например, с помощью радиокнопок, в шаблоне. html страница, цвет и память отправляют выбранный вариант на сервер (или views.py, если я правильно понимаю концепцию ).
Моя идея состояла в том, чтобы создать модель "ChosenProduct", содержащую столбцы типа "пользователь", "цвет", "память", "элемент". Поэтому, выбрав цвет и память, я в идеале мог бы создать новый объект, содержащий все четыре параметра. С этим я мог показать пользователю, что он доступен, и после нажатия «добавить в корзину», добавив его в корзину ...
Но проблема в том, что я не знаю, как легко передать эти параметры (цвет, size), который пользователь выбирает из шаблона. html для фактической функции, которая обрабатывает это.
models.py
#presenting actual Product for sale
class Product(models.Model):
code = models.CharField(max_length=30)
colorCode = models.CharField(max_length=20, blank=True, null=True)
rgb = models.CharField(max_length=20, blank=True, null=True)
sizeCode = models.CharField(max_length=20, blank=True, null=True)
avalibility = models.IntegerField(default=0)
def __str__(self):
return self.code
#wraps multiple Products
class Item(models.Model):
title = models.CharField(max_length=100)
description = models.CharField(max_length=10000)
price_inclVat = models.FloatField()
price_noVat = models.FloatField()
price_discount_inclVat = models.FloatField(blank=True, null=True)
price_discount_notVat = models.FloatField(blank=True, null=True)
products = models.ManyToManyField(Product)
slug = models.SlugField()
label = models.CharField(choices=LABEL_CHOICES,
max_length=1, null=True, blank=True)
#my idea of presenting chosen variants in user's relation
class ChosenProduct(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE)
color = models.CharField(max_length=20, blank=True)
size = models.CharField(max_length=20, blank=True)
item = models.ForeignKey(Item, on_delete=models.CASCADE)
def __str__(self):
return self.item.title
views.py (DetailView )
class ItemDetailView(DetailView):
model = Item
template_name = "product.html"
Не могли бы вы указать мне правильное направление и как выполнить эту операцию, используя Django? Я нашел несколько потоков, обсуждающих request.GET, но я не хочу передавать параметры через URL (так как это только из моего понимания).
Спасибо!