Depuis la dernière fois, j'ai essayé diverses choses parce que je veux éviter que le nom et la date de l'employé soient modifiés.
J'ai recherché forms.py pendant quelques heures (je n'ai pas appris à l'utiliser), mais cela n'a pas fonctionné.
Finalement, je me suis demandé ce qui se passerait si je faisais la même chose que l'horaire et que je transmettais ce que j'ai fait pour remettre le nom de l'employé, et finalement ça a marché.
schedule/views.py
class ScheduleUpdate(UpdateView):
template_name = 'schedule/update.html'
model = Schedule
fields = ('user','date', 'shift_name_1', 'shisetsu_name_1', 'shift_name_2', 'shisetsu_name_2', 'shift_name_3', 'shisetsu_name_3','shift_name_4', 'shisetsu_name_4', 'day_total_worktime')
success_url = reverse_lazy('schedule:homeschedule')
#def get_queryset(self):
# return super().get_queryset().select_related('user')
# return super().get_queryset().select_related('schedule')
C'était tout. Je l'ai eu en ajoutant la dernière ligne
schedule/update.html
{% extends 'schedule/base.html' %}
{% block header %}
{% endblock header %}
{% block content %}
<form action="" method="POST">{% csrf_token %}
<P >Nom de l'employé: {{ user.last_name }} {{ user.first_name }}</P>
<p>Date: {{ schedule.date }}</p>
<p>Maj 1:{{ form.shift_name_1 }}</p>
<p>Nom de l'établissement 1:{{ form.shisetsu_name_1 }}</p>
<p>Shift 2:{{ form.shift_name_2 }}</p>
<p>Nom de l'établissement 2:{{ form.shisetsu_name_2 }}</p>
<p>Shift 3:{{ form.shift_name_3 }}</p>
<p>Nom de l'établissement 3:{{ form.shisetsu_name_3 }}</p>
<p>Équipe 4:{{ form.shift_name_4 }}</p>
<p>Nom de l'établissement 4:{{ form.shisetsu_name_4 }}</p>
<p>Heures de travail totales:{{ form.day_total_worktime }}</p>
<input class="btn btn-primary" type="submit" value="mise à jour">
<a href="{% url 'schedule:homeschedule' %}" class="btn-secondary btn active">Revenir</a>
</form>
{% endblock content %}
Vous l'avez maintenant implémenté!
Finalement!
Ensuite, je vais essayer de rendre possible le nombre total d'heures de travail ... J'ai commencé à le faire, mais il y avait un autre problème!
Je ne peux pas revenir à la table des équipes depuis l'écran que je modifie depuis l'écran de mise à jour
python:schedule.views.py
class ScheduleUpdate(UpdateView):
template_name = 'schedule/update.html'
model = Schedule
fields = ('shift_name_1', 'shisetsu_name_1', 'shift_name_2', 'shisetsu_name_2', 'shift_name_3', 'shisetsu_name_3','shift_name_4', 'shisetsu_name_4', 'day_total_worktime')
year = Schedule.year
month = Schedule.month
#success_url = reverse_lazy('schedule:monthschedule', kwargs={"year": self.object.year})
#success_url = HttpResponseRedirect('/schedule/monthschedule/%s/%s/' % (Schedule.year,Schedule.month,))
success_url = reverse_lazy('/schedule/monthschedule/%s/%s/' % (year,month))
#def get_url_success(self):
# url = "/schedule/monthschedulefunc/" + self.year +"/"+ self.month
# return HttpResponseRedirect(url)
def get_queryset(self): ###Je n'en avais pas besoin ...
#return super().get_queryset().select_related('user')
#return super().get_queryset().select_related('schedule')
#return super().get_queryset().select_related('Shift')
Essayer diverses choses, un peu plus de 2 heures ... J'ai déjà abandonné
Je vais le recréer avec la fonction def! Je ne sais pas si cela peut être fait immédiatement simplement parce que c'est une fonction (rires)
Défi pour le moment (⌒∇⌒)
Cela a pris environ 2 heures, mais c'était possible! Enfin j'ai aussi utilisé forms.py (encore loin d'être compris, mais il est important de changer 0 en 1)
まずは、views.py
schedule/views.py
def scheduleUpdatefunc(request,pk):
Schedule_list = Schedule.objects.get(pk = int(pk))
User_list = User.objects.get(username = Schedule_list.user)
if request.method == 'POST':
form = ScheduleUpdateForm(data=request.POST)
year = Schedule_list.year
month = Schedule_list.month
if form.is_valid():
Schedule_list.shift_name_1 = form.cleaned_data['shift_name_1']
Schedule_list.shisetsu_name_1 = form.cleaned_data['shisetsu_name_1']
Schedule_list.shift_name_2 = form.cleaned_data['shift_name_2']
Schedule_list.shisetsu_name_2 = form.cleaned_data['shisetsu_name_2']
Schedule_list.shift_name_3 = form.cleaned_data['shift_name_3']
Schedule_list.shisetsu_name_3 = form.cleaned_data['shisetsu_name_3']
Schedule_list.shift_name_4 = form.cleaned_data['shift_name_4']
Schedule_list.shisetsu_name_4 = form.cleaned_data['shisetsu_name_4']
Schedule_list.day_total_worktime = form.cleaned_data['day_total_worktime']
Schedule_list.save()
return HttpResponseRedirect('/schedule/monthschedule/%s/%s/' % (year,month,))
else:
item = {
"shift_name_1":Schedule_list.shift_name_1,
"shisetsu_name_1": Schedule_list.shisetsu_name_1,
"shift_name_2": Schedule_list.shift_name_2,
"shisetsu_name_2": Schedule_list.shisetsu_name_2,
"shift_name_3": Schedule_list.shift_name_3,
"shisetsu_name_3": Schedule_list.shisetsu_name_3,
"shift_name_4": Schedule_list.shift_name_4,
"shisetsu_name_4": Schedule_list.shisetsu_name_4,
}
form = ScheduleUpdateForm(initial=item)
context = {
'form' : form,
'Schedule_list': Schedule_list,
'User_list': User_list,
}
return render(request,'schedule/update.html', context )
Le code est long, mais la plupart relient simplement quels champs à quels champs, J'ai pu le faire dès que j'ai commencé à le faire.
次に初めてトライしたforms.py
schedule/forms.py
class ScheduleUpdateForm(forms.ModelForm):
class Meta:
model = Schedule
fields = ('shift_name_1', 'shisetsu_name_1', 'shift_name_2', 'shisetsu_name_2', 'shift_name_3', 'shisetsu_name_3','shift_name_4', 'shisetsu_name_4', 'day_total_worktime')
#shift_name_1 = forms.ForeignKey(Shift, verbose_name='1 nom d'équipe', related_name='shift_name1',on_delete=models.SET_NULL,null= True)
#shisetsu_name_1 = forms.ForeignKey(Shisetsu, verbose_name='1 établissement', related_name='shisetsu_name1',on_delete=models.SET_NULL,blank=True, null=True)
#shift_name_2 = forms.ForeignKey(Shift, verbose_name='2 nom d'équipe', related_name='shift_name2',on_delete=models.SET_NULL,blank=True, null=True)
#shisetsu_name_2 = forms.ForeignKey(Shisetsu, verbose_name='2 installations', related_name='shisetsu_name2',on_delete=models.SET_NULL,blank=True, null=True)
#shift_name_3 = forms.ForeignKey(Shift, verbose_name='3 nom d'équipe', related_name='shift_name3',on_delete=models.SET_NULL,blank=True, null=True)
#shisetsu_name_3 = forms.ForeignKey(Shisetsu, verbose_name='3 installations', related_name='shisetsu_name3',on_delete=models.SET_NULL,blank=True, null=True)
#shift_name_4 = forms.ForeignKey(Shift, verbose_name='4 nom d'équipe', related_name='shift_name4',on_delete=models.SET_NULL,blank=True, null=True)
#shisetsu_name_4 = forms.ForeignKey(Shisetsu, verbose_name='4 établissements', related_name='shisetsu_name4',on_delete=models.SET_NULL,blank=True, null=True)
Comme le contrôle d'entrée n'était pas bien lié au début, il y a des preuves de collage à partir de modèles (rires)
J'ai édité un peu le html
schedule/update.html
{% extends 'schedule/base.html' %}
{% block header %}
{% endblock header %}
{% block content %}
<form action="" method="POST">{% csrf_token %}
<P >Nom de l'employé: {{ User_list.last_name }} {{ User_list.first_name }}</P>
<p>Date: {{ Schedule_list.date }}</p>
{{ form.as_p }}
{% csrf_token %}
<input class="btn btn-primary" type="submit" value="mise à jour">
<a href="{% url 'schedule:homeschedule' %}" class="btn-secondary btn active">Revenir</a>
</form>
{% endblock content %}
Vous pouvez maintenant revenir au mois que vous modifiez en appuyant sur le bouton de mise à jour sur l'écran de correction.
Recommended Posts