Как использовать поле списка в моделях Django - PullRequest
0 голосов
/ 01 ноября 2019

Я веду простую таблицу с тремя столбцами: название курса, зарегистрироваться и удалить. Ниже приведен скриншот таблицы. ss В настоящее время, когда я нажимаю на регистр, я изменяю цвет этой строки на темный, а затем меняю регистр на незарегистрированный.

файл шаблона 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-страницу при нажатии на регистр, где я получаю ввод текста от пользователя, которого я хочу добавить в список этого конкретного курса,но ничего не получается.

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

Любое предложение будет действительно полезным. Заранее спасибо.

...