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>