Ajout de la fonction pour gérer la liste Todo pour chaque établissement! Je pensais ajuster l'écran de saisie pour les quarts de travail et créer une fonction de règle de validation, mais c'était assez difficile et je ne pouvais pas le trouver, alors j'ai créé une nouvelle application (rires).
L'écran ressemble à ceci.
Pour l'affichage de la pièce terminée, j'ai envisagé de basculer avec la case à cocher et posé une question avec Qiita, mais comme je ne comprends pas le javascript, je l'ai implémenté avec la balise a en fonction de l'indice que j'ai reçu.
C'est un écran de détail, mais la fonction de base de Django est vraiment trop simple et insipide (rires)
J'ai créé une application en pensant que je devrais pouvoir ajouter une aide à la saisie et une fonction de vérification des entrées ici (rires)
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):
#Obtenir les informations d'affiliation de l'utilisateur connecté
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")
#Réacquis pour l'affichage des boutons d'installation
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)
#Obtenir les informations d'affiliation de l'utilisateur connecté
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")
#Réacquis pour l'affichage des boutons d'installation
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">Liste de choses à faire</h1>
<p class="lead">Fais ce que tu peux!</p>
<a href="{% url 'todo:create' %}" class="btn-info btn active">Créer un nouveau</a>
<a href="{% url 'todo:list' %}" button type="button" class="btn btn-outline-dark">tout</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 %}
Y compris l'achèvement
<a href="{% url 'todo:list' %}?all" button type="button" class="btn btn-outline-dark">tout</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>Nom de l'établissement</th>
<th>Titre</th>
<th>priorité</th>
<th>Personne en charge</th>
<th>Date de début prévue</th>
<th>Date de fin prévue</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">
//Obtenir la case à cocher de l'identifiant
const checkbox = documents.getElementsById('check');
//Définir un rappel à appeler lorsque l'état de la case à cocher change
checkbox.addEventListener('change', (e) => {
//Mouvements séparés dans l'état de case à cocher
if (checkbox.checked) {
location.href = 'todo:list'?all'
} else {
location.href = 'todo:list'
}
});
</script>
``
Le dernier javascript est ce que vous avez répondu. À l'avenir, j'aimerais améliorer mes compétences afin de pouvoir mettre en œuvre ce que vous m'avez appris.
Recommended Posts