Я веду простую таблицу с тремя столбцами: название курса, зарегистрироваться и удалить. Ниже приведен скриншот таблицы. В настоящее время, когда я нажимаю на регистр, я изменяю цвет этой строки на темный, а затем меняю регистр на незарегистрированный.
файл шаблона html:
Сначала я получаю текстовый ввод, т.е. название курса
<form class="form-inline my-2 my-lg-0" method="POST">
{% csrf_token %}
<input class="form-control mr-sm-2" type="search" placeholder="Add Item" aria-label="Search" name="item">
<button class="btn btn-outline-secondary my-2 my-sm-0" type="submit">Add to List</button>
</form>
Затем я отображаю таблицу
{% if all_items %}
<table class="table table-bordered">
{% for things in all_items %}
{% if things.completed %}
<tr class="table-secondary">
<td><a href="{% url 'edit' things.id %}">{{ things.item}}</a></td>
<td><center><a href="{% url 'unregister' things.id %}">unregister</a></center></td>
<td><center><a href="{% url 'delete' things.id %}">Delete</a></center></td>
</tr>
{% else %}
<tr>
<td><a href="{% url 'edit' things.id %}">{{ things.item}}</a></td>
<td><center><a href="{% url 'register' things.id %}">register</a></center></td>
<td><center><a href="{% url 'delete' things.id %}">Delete</a></center></td>
</tr>
{% endif %}
{% endfor %}
</table>
{% endif %}
views.py:
from django.shortcuts import render,redirect
from .models import List
from .forms import ListForm
def Link2(request):
if request.method=='POST':
form=ListForm(request.POST or None)
if form.is_valid():
form.save()
all_items=List.objects.all
return render(request, 'Link2.html', {'all_items':all_items})
else:
all_items=List.objects.all
return render(request, 'Link2.html', {'all_items':all_items})
def register(request,list_id):
item=List.objects.get(pk=list_id)
item.completed=True
item.save()
return redirect('Link2')
def unregister(request,list_id):
item=List.objects.get(pk=list_id)
item.completed=False
item.save()
return redirect('Link2')
def delete(request,list_id):
item=List.objects.get(pk=list_id)
item.delete()
return redirect('Link2')
models.py:
from django.db import models
from django_mysql.models import ListTextField
class List(models.Model):
item=models.CharField(max_length=200)
completed=models.BooleanField(default=False)
def __str__(self):
return self.item + ' | ' +str(self.completed)
forms.py:
from django import forms
from .models import List
class ListForm(forms.ModelForm):
class Meta:
model=List
fields=["item","completed"]
Вместо этого я хочу, чтобы при нажатии на ссылку регистрации я хотел попросить пользователя ввести свои данные (возможно, только его имя)а затем сохранить его в списке (который я должен добавить в мой models.py). Я пробовал много вещей, таких как добавление списка в мои модели с использованием ListTextField из django_mysql.models и затем перенаправление на другую html-страницу при нажатии на регистр, где я получаю ввод текста от пользователя, которого я хочу добавить в список этого конкретного курса,но ничего не получается.
Я не опубликовал этот код, в котором я пробую упомянутый выше подход, так как думал, что для этого вопроса будет слишком много кода. Я могу опубликовать его, если вы хотите его увидеть.
Любое предложение будет действительно полезным. Заранее спасибо.