Django: Добавление элемента в определенный список (Одностраничное приложение Django для работы со списками)

Я пытаюсь сделать приложение для составления списка дел с помощью Django.

Моя текущая страница приложения: Моя страница приложения

Я показываю все списки на одной странице, включая их элементы. Я сделал форму для создания нового списка, добавил кнопки для удаления списков и их элементов. Итак, последняя задача - добавить форму для создания нового элемента списка для определенного списка.

Я пытаюсь использовать тот же метод, что и для создания нового списка, т.е. использовать Meta форму.

Моя проблема:

Я хочу добавить элемент, специфичный для списка, в котором он находится, т.е. списка, в который попадает текстовое поле формы (см. веб-страницу здесь: My App page), но у меня с этим проблемы, потому что я не знаю, как сказать Django, что я хочу добавить этот элемент в определенный список. Другими словами, я не знаю, как добавить элемент в определенный список list.id.

Если кто-то может мне помочь, я буду очень признателен <3

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

models.py

from typing_extensions import Required
from django.db import models

class List(models.Model):
    list_title = models.CharField(max_length=100, blank=True, null=True)
    pub_date = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.list_title

class Items(models.Model):
    list = models.ForeignKey(List, on_delete=models.CASCADE)
    item_text = models.CharField(max_length=200, blank=True, null=True)

    def __str__(self):
        return self.item_text

forms.py

from django import forms
from .models import List, Items

class NewList(forms.ModelForm):
    class Meta:
        model = List
        fields = ['list_title']

class NewItem(forms.ModelForm):
    class Meta:
        model = Items
        fields = ['item_text']

views.py

from django.shortcuts import render, redirect
from .models import List, Items
from .forms import NewList, NewItem

def index(request):
    lists = List.objects.all()
    
    # create new list
    form = NewList(request.POST)
    if request.method == 'POST':
        if form.is_valid():
            form.save()
            return redirect('index')

    item_form = NewItem(request.POST)
    if request.method == 'POST':
        if item_form.is_valid():
            #
            # add something here
            #
            pass

    context = {'lists': lists, 'form': form, 'item_form': item_form}
    return render(request, 'ToDo/index.html', context)

def delete_list(request, id):
    list = List.objects.get(pk=id)
    list.delete()
    return redirect('index')

def delete_item(request, id):
    item = Items.objects.get(pk=id)
    item.delete()
    return redirect('index')

index.html

<body>
    <h1>Lists</h1>

    <form method="post">
        {% csrf_token %}
        {{form}} <input type="submit" name="Submit">
    </form>
    
    {% if lists %}
        {% for list in lists %}
            <ul>
                <li>
                    <b>{{list.list_title}}</b>
                    <a href="{% url 'delete-list' list.id %}" style="text-decoration: None; color: red;">Delete list</a>
                    {% for item in list.items_set.all %}
                        <ul>
                            <li>
                                {{item}}
                                <a href="{% url 'delete-item' item.id %}" style="text-decoration: None; color: green;">Delete</a>
                            </li>
                        </ul>
                    {% endfor %}
                    <br>
                    
                    <! -- ADD ITEM HERE -->

                    <form method="post">
                    {% csrf_token %}
                        {{item_form}}
                        <input type="submit" name="Submit">
                    </form>

                    <! ------------------->
                
                </li>
            </ul>
        {% endfor%}
    {% else %}
        <p>No Lists have been made</p>
    {% endif %}

</body>
Вернуться на верх