Используя 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 }}

черт возьми, я тупой

Вернуться на верх