Я относительно новичок в Django, и я составил список Todo, где пользователь может добавить задачу и отметить, если она выполнена. Я добавил поле формы приоритетов, которое является виджетом выбора радио. В зависимости от приоритета поле задачи будет красного, оранжевого или зеленого цвета.
Переключатели отображаются правильно, и я не могу опубликовать задачу без указания приоритета ввода. Но приоритет всегда берется по умолчанию (высокий).
Я попробовал пару вещей, чтобы изменить и отобразить приоритеты, но ничего не получалось.
Я верю, что что-то в views.py нужно изменить, чтобы оно работало, но из-за недостатка опыта я не могу это понять.
Views.py
@require_POST
def addTodo(request):
form = TodoForm(request.POST)
#print(request.POST['text'])
if form.is_valid():
new_todo = Todo(text = request.POST['text'])
new_todo.save()
for item in form:
return redirect('index')
def completeTodo(request, todo_id):
todo = Todo.objects.get(pk=todo_id)
todo.complete = True
todo.save()
return redirect('index')
form.py
from django import forms
prior_choice =[('high','High'),('mod','Mod'),('low','Low')]
class TodoForm(forms.Form):
text = forms.CharField(max_length = 40,
widget = forms.TextInput(
attrs= {'class': 'form-control', 'placeholder': 'Enter todo e.g. Delete junk files', 'aria-label': 'Todo', 'aria-describedby':'add-btn'}))
priority = forms.CharField(widget=forms.RadioSelect(choices=prior_choice))
models.py
from django.db import models
class Todo(models.Model):
text = models.CharField(max_length=40)
complete = models.BooleanField(default = False)
task_priority = models.CharField(max_length=40, default='high')
def __str__(self):
return self.text
index.html
<ul class="list-group t20">
{% for todo in todo_list %}
{% if todo.task_priority == 'high'%}
<a href=" {% url 'complete' todo.id %}" ><li class="list-group-item " style="background-color: red;"> {{ todo.text}}</li></a>
{%elif todo.task_priority == 'mod'%}
<a href=" {% url 'complete' todo.id %}" ><li class="list-group-item " style="background-color: orange;"> {{ todo.text}}</li></a>
{%elif todo.task_priority == 'low'%}
<a href=" {% url 'complete' todo.id %}" ><li class="list-group-item " style="background-color: yellow;"> {{ todo.text}}</li></a>
{%else%}
<div class="todo-completed"> <li class="list-group-item" style="background-color: green;"> {{ todo.text}}</li></div>
{%endif%}
{% endfor %}
</ul>
Вот скриншот выходного приложения
Пожалуйста, помогите мне связать переключатель с задачей в списке и отобразить соответственно.
Заранее спасибо.