Используя django, я хочу показать пользователю варианты для выбора с помощью 'select' и модели TextChoices
В моем html шаблоне есть поле выбора, где пользователь выбирает желаемый размер одежды, вот так
<select>
<option> Small </option>
<option> Medium </option>
<option> Large </option>
</select>
я хочу отобразить опции для просмотра пользователем.
Поскольку я хочу сохранить входные данные в базе данных, чтобы получить их, я думал сделать следующее:
models.py
class Product(models.Model):
...
class Size(models.TextChoices):
SMALL = 'S'
MEDIUM = 'M'
LARGE = 'L'
size = models.CharField(max_length=3, choices=Size.choices, default=Size.LARGE)
html
<select>
{% for size in product.size %}
<option value="" name="{{ size }}">
{{ size }}
</option>
{% endfor %}
</select>
views.py
def product(request, slug):
product = get_object_or_404(Product, slug=slug)
return render(request, 'product/product.html', {'product': product})
но у меня отображается только одно значение, которое по умолчанию LARGE
На моей странице администратора, выпадающий выбор "Размеры" для продукта отображается отлично со всеми 3 различными значениями для выбора администратором
я выбрал неправильный метод с 'TextChoices'? html не правильный? я что-то упустил в views.py? все вышеперечисленное?
Итак... я нашел способ сделать это...
использование форм django
from django import forms
from .models import Product
class ClothingForm(forms.ModelForm):
class Meta:
model = Product
fields = ['size']
views.py
from .forms import ClothingForm
def product(request, slug):
product = get_object_or_404(Product, slug=slug)
sizesForm = ClothingForm()
return render(request, 'product/product.html', {'product': product, 'sizesForm': sizesForm})
html
{{ sizesForm }}
черт возьми, я тупой