Как отобразить варианты в форме django на основе базы данных

Я пишу приложение на django, которое помогает создать список покупок на основе акций магазина.

Склад магазина будет храниться в базе данных, которая выглядит следующим образом (пожалуйста, не обращайте внимания на орфографические ошибки!):

Тип Name Цвет
Фрукты Яблоко Розовый
Фрукты Яблоко Зеленый
Фрукты Банана Желтый
Фрукты Банана Зеленый
Фрукты Клементин Оранжевый
Фрукты Черника Синий
Вег Томат Красный
Вег Шпинат Темно-зеленый
Вег Кале Темно-зеленый
Овощи Карликовая фасоль Светло-зеленый

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

Пользователь сначала выбирает тип - который должен отображаться как выбор между "Fruit" и "Veg".

Тогда, когда они выбирают, например, "Фрукты", только фрукты должны быть представлены в качестве вариантов выбора в "Названии".

Наконец, чтобы они могли выбрать цвет, в качестве вариантов в форме должен отображаться только соответствующий цвет выбранного фрукта.

Для создания базы данных складских запасов магазина я создал следующую форму:

Class Stock(models.Model):
    Type_choices = models.TextChoices('Fruit','Veg')
    stock_type = models.CharField(choices=Type_choices.choices)
    name = models.CharField(max_length=264, unique=False)
    colour = models.CharField(max_length=264, unique=False)

Затем я заполнил ее, чтобы она выглядела как приведенная выше таблица.

Для хранения списка покупок я создал модель:

Class ShoppingList(models.Model):
    stock_type = models.ForeignKey(Stock, on_delete=models.CASCADE)
    name = models.ForeignKey(Stock, on_delete=models.CASCADE)
    colour = models.ForeignKey(Stock, on_delete=models.CASCADE)

Эта модель определенно не верна, и мне интересно, может ли кто-нибудь помочь мне с этим?

В файле views.py у меня есть следующее:

def shopping_list_view(request):
    shopping_list_form = forms.ShoppingList()

    if request.method == 'POST':
        shopping_list_form = forms.ShoppingList()

        if shopping_list_form.is_valid():
            shopping_list_form.save(commit=True)

            return views.home_view(request)

    return render(request, 'shopping_list.html', {'form':shopping_list_form})

Наконец, в файле shopping_list.html у меня есть:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>ShoppingList</title>

    <!-- Stylesheets -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">

</head>
<body>

    <h1>Fill out shopping list</h1>

    <div class="container">
        <form action="" method="post">
            {{ form.as_p }}
            {% csrf_token %}
            <input type="submit" class="btn btn-primary" name="" id="" value="Submit">
        </form>
    </div>

</body>
</html>

Благодарен, если кто-то может помочь мне с этим!

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