Die Funktion zum Verwalten der Todo-Liste für jede Einrichtung wurde hinzugefügt! Ich dachte daran, den Eingabebildschirm für Schichten anzupassen und eine Validierungsregelfunktion zu erstellen, aber es war ziemlich schwierig und ich konnte es nicht finden, also habe ich eine neue App erstellt (lacht).
Der Bildschirm sieht so aus.
Für die Anzeige des fertigen Teils habe ich überlegt, mit dem Kontrollkästchen zu wechseln und eine Frage an Qiita zu stellen. Da ich Javascript jedoch nicht verstehe, habe ich es mit dem Tag a implementiert, das auf dem erhaltenen Hinweis basiert.
Es ist ein Detailbildschirm, aber die Grundfunktion von Django ist wirklich zu einfach und geschmacklos (lacht)
Ich habe eine App erstellt, während ich dachte, ich müsste hier und da Eingabehilfe und Eingabeüberprüfungsfunktion hinzufügen (lacht)
todo/views.py
from django.shortcuts import render
from django.views.generic import ListView, DetailView, CreateView, DeleteView, UpdateView
from .models import TodoModel
from shisetsu.models import *
from accounts.models import *
from django.urls import reverse_lazy
# Create your views here.
def todolistfunc(request):
#Erhalten Sie Zugehörigkeitsinformationen vom angemeldeten Benutzer
current_user = request.user
check_value = request.POST.getlist('check')
UserShozoku_list = UserShozokuModel.objects.filter(user = current_user).values_list("shisetsu_name", flat=True)
UserShozoku_list = list(UserShozoku_list)
if 'all' in request.GET:
todo_list = TodoModel.objects.filter(shisetsu_name__in = UserShozoku_list).select_related().all().order_by("plants_enddate")
kako = "off"
else:
todo_list = TodoModel.objects.filter(shisetsu_name__in = UserShozoku_list).filter(enddate__isnull=True).select_related().all().order_by("plants_enddate")
kako = "on"
shisetsu_object = Shisetsu.objects.all()
user_list = User.objects.select_related().all().order_by("profile__hyoujijyun")
#Für die Anzeige der Einrichtungsschaltfläche erneut erforderlich
UserShozoku_list = UserShozokuModel.objects.filter(user = current_user)
context = {
'todo_list': todo_list,
'shisetsu_object': shisetsu_object,
'user_list': user_list,
'UserShozoku_list':UserShozoku_list,
'kako':kako,
}
return render(request,'todo/list.html', context)
def todolistfilterfunc(request, shisetsu_num):
shisetsu_num = int(shisetsu_num)
#Erhalten Sie Zugehörigkeitsinformationen vom angemeldeten Benutzer
current_user = request.user
UserShozoku_list = UserShozokuModel.objects.filter(user = current_user).values_list("shisetsu_name", flat=True)
UserShozoku_list = list(UserShozoku_list)
#todo_list = TodoModel.objects.filter(shisetsu_name__in = UserShozoku_list).select_related().all().order_by("plants_enddate")
if 'all' in request.GET:
todo_list = TodoModel.objects.filter(shisetsu_name = shisetsu_num).select_related().all().order_by("plants_enddate")
kako = "off"
else:
todo_list = TodoModel.objects.filter(shisetsu_name = shisetsu_num).filter(enddate__isnull=True).select_related().all().order_by("plants_enddate")
kako = "on"
shisetsu_object = Shisetsu.objects.filter(id__in = UserShozoku_list)
print(shisetsu_object)
user_list = User.objects.select_related().all().order_by("profile__hyoujijyun")
#Für die Anzeige der Einrichtungsschaltfläche erneut erforderlich
UserShozoku_list = UserShozokuModel.objects.filter(user = current_user)
context = {
'todo_list': todo_list,
'shisetsu_object': shisetsu_object,
'user_list': user_list,
'UserShozoku_list':UserShozoku_list,
}
return render(request,'todo/list.html', context)
class TodoDetail(DetailView):
template_name = 'todo/detail.html'
model = TodoModel
class TodoCreate(CreateView):
template_name = 'todo/create.html'
model = TodoModel
fields = ('title', 'memo', 'priority','shisetsu_name', 'user', 'plants_startdate', 'plants_enddate', 'enddate')
success_url = reverse_lazy('todo:list')
class TodoDelete(DeleteView):
template_name = 'todo/delete.html'
model = TodoModel
success_url = reverse_lazy('todo:list')
class TodoUpdate(UpdateView):
template_name = 'todo/update.html'
model = TodoModel
fields = ('title', 'memo', 'priority','shisetsu_name', 'user', 'plants_startdate', 'plants_enddate', 'enddate')
success_url = reverse_lazy('todo:list')
urls.py
from django.urls import path, include
from .views import todolistfunc, todolistfilterfunc, TodoDetail,TodoCreate, TodoDelete, TodoUpdate
app_name = 'todo'
urlpatterns = [
path('listfilter/<int:shisetsu_num>', todolistfilterfunc, name='listfilter'),
path('list/', todolistfunc, name='list'),
path('detail/<int:pk>', TodoDetail.as_view(), name='detail'),
path('create/', TodoCreate.as_view(), name='create'),
path('delete/<int:pk>', TodoDelete.as_view(), name='delete'),
path('update/<int:pk>', TodoUpdate.as_view(), name='update'),
]
todo/list.html
{% extends 'templates/accounts/base.html' %}
{% load static %}
{% block header %}
<form action="" method="POST">{% csrf_token %}
<div class="jumbotron jumbotron-fluid">
<div class="container">
<h1 class="display-4">Aufgabenliste</h1>
<p class="lead">Tu, was du kannst!</p>
<a href="{% url 'todo:create' %}" class="btn-info btn active">Erstelle neu</a>
<a href="{% url 'todo:list' %}" button type="button" class="btn btn-outline-dark">alles</a>
{% for shisetsu in shisetsu_object %}
{% for UserShozoku in UserShozoku_list %}
{% if shisetsu.name|stringformat:"s" == UserShozoku.shisetsu_name|stringformat:"s" %}
<a href="{% url 'todo:listfilter' shisetsu.pk %}" button type="submit" class="btn btn-outline-dark" span style="background-color:{{ shisetsu.color }}">{{ shisetsu.name }}</span></a>
{% endif %}
{% endfor %}
{% endfor %}
Einschließlich Fertigstellung
<a href="{% url 'todo:list' %}?all" button type="button" class="btn btn-outline-dark">alles</a>
{% for shisetsu in shisetsu_object %}
{% for UserShozoku in UserShozoku_list %}
{% if shisetsu.name|stringformat:"s" == UserShozoku.shisetsu_name|stringformat:"s" %}
<a href="{% url 'todo:listfilter' shisetsu.pk %}?all" button type="submit" class="btn btn-outline-dark" span style="background-color:{{ shisetsu.color }}">{{ shisetsu.name }}</span></a>
{% endif %}
{% endfor %}
{% endfor %}
</div>
</div>
</div>
</form>
{% endblock header %}
{% block content %}
<table class="table table-striped table-bordered table-hover ">
<thead>
<th>Name der Einrichtung</th>
<th>Titel</th>
<th>Priorität</th>
<th>Verantwortliche Person</th>
<th>Geplanter Starttermin</th>
<th>Voraussichtliches Enddatum</th>
</thead>
<tr>
{% for todo in todo_list %}
<tbody class="table-{{ todo.priority }}">
<td >{{ todo.shisetsu_name|default:"" }}</td>
<td ><a href="{% url 'todo:update' todo.id %}">{{ todo.title }}</a></td>
<td >{{ todo.get_priority_display }} </td>
<td >{{ todo.user.last_name|default:"" }} {{ todo.user.first_name|default:"" }}</td>
<td >{{ todo.plants_startdate|default:"" }} </td>
<td >{{ todo.plants_enddate|default:"" }}</td>
</tbody>
{% endfor %}
</tr>
</div>
</table>
{% endblock content %}
<script type="text/javascript">
//Kontrollkästchen von ID abrufen
const checkbox = documents.getElementsById('check');
//Legen Sie einen Rückruf fest, der aufgerufen werden soll, wenn sich der Status des Kontrollkästchens ändert
checkbox.addEventListener('change', (e) => {
//Getrennte Bewegungen im Kontrollkästchen
if (checkbox.checked) {
location.href = 'todo:list'?all'
} else {
location.href = 'todo:list'
}
});
</script>
``
Das letzte Javascript haben Sie beantwortet. In Zukunft möchte ich meine Fähigkeiten verbessern, damit ich das umsetzen kann, was Sie mir beigebracht haben.
Recommended Posts