Seit dem letzten Mal habe ich verschiedene Dinge ausprobiert, weil ich verhindern möchte, dass der Name und das Datum des Mitarbeiters bearbeitet werden.
Ich habe ein paar Stunden lang nach forms.py recherchiert (ich habe nicht gelernt, wie man es benutzt), aber es hat nicht funktioniert.
Schließlich fragte ich mich, was passieren würde, wenn ich das Gleiche wie den Zeitplan tun und übergeben würde, was ich tun würde, um den Namen des Mitarbeiters zu übergeben, und schließlich funktionierte es.
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')
Das war alles. Ich habe es durch Hinzufügen der letzten Zeile erhalten
schedule/update.html
{% extends 'schedule/base.html' %}
{% block header %}
{% endblock header %}
{% block content %}
<form action="" method="POST">{% csrf_token %}
<P >Mitarbeitername: {{ user.last_name }} {{ user.first_name }}</P>
<p>Datum: {{ schedule.date }}</p>
<p>Schicht 1:{{ form.shift_name_1 }}</p>
<p>Name der Einrichtung 1:{{ form.shisetsu_name_1 }}</p>
<p>Schicht 2:{{ form.shift_name_2 }}</p>
<p>Name der Einrichtung 2:{{ form.shisetsu_name_2 }}</p>
<p>Schicht 3:{{ form.shift_name_3 }}</p>
<p>Name der Einrichtung 3:{{ form.shisetsu_name_3 }}</p>
<p>Schicht 4:{{ form.shift_name_4 }}</p>
<p>Name der Einrichtung 4:{{ form.shisetsu_name_4 }}</p>
<p>Gesamtarbeitszeit:{{ form.day_total_worktime }}</p>
<input class="btn btn-primary" type="submit" value="aktualisieren">
<a href="{% url 'schedule:homeschedule' %}" class="btn-secondary btn active">Rückkehr</a>
</form>
{% endblock content %}
Sie haben es jetzt implementiert!
Schließlich!
Als nächstes werde ich versuchen, die Gesamtarbeitszeit möglich zu machen ... Ich habe damit angefangen, aber es gab noch ein anderes Problem!
Ich kann vom Bildschirm, den ich vom Aktualisierungsbildschirm aus bearbeite, nicht zur Verschiebungstabelle zurückkehren
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): ###Ich brauchte es nicht ...
#return super().get_queryset().select_related('user')
#return super().get_queryset().select_related('schedule')
#return super().get_queryset().select_related('Shift')
Ich probiere verschiedene Dinge aus, etwas mehr als 2 Stunden ... Ich habe schon aufgegeben
Ich werde es mit der def-Funktion neu erstellen! Ich bin mir nicht sicher, ob es sofort möglich ist, nur weil es eine Funktion ist (lacht)
Herausforderung vorerst (⌒∇⌒)
Es dauerte ungefähr 2 Stunden, aber es war möglich! Schließlich habe ich auch forms.py verwendet (noch weit vom Verständnis entfernt, aber es ist wichtig, 0 in 1 zu ändern)
まずは、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 )
Der Code ist lang, aber die meisten verbinden nur welche Felder mit welchen Feldern Ich konnte es tun, sobald ich anfing, es zu machen.
次に初めてトライした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 Schichtname', related_name='shift_name1',on_delete=models.SET_NULL,null= True)
#shisetsu_name_1 = forms.ForeignKey(Shisetsu, verbose_name='1 Einrichtung', related_name='shisetsu_name1',on_delete=models.SET_NULL,blank=True, null=True)
#shift_name_2 = forms.ForeignKey(Shift, verbose_name='2 Schichtname', related_name='shift_name2',on_delete=models.SET_NULL,blank=True, null=True)
#shisetsu_name_2 = forms.ForeignKey(Shisetsu, verbose_name='2 Einrichtungen', related_name='shisetsu_name2',on_delete=models.SET_NULL,blank=True, null=True)
#shift_name_3 = forms.ForeignKey(Shift, verbose_name='3 Schichtname', related_name='shift_name3',on_delete=models.SET_NULL,blank=True, null=True)
#shisetsu_name_3 = forms.ForeignKey(Shisetsu, verbose_name='3 Einrichtungen', related_name='shisetsu_name3',on_delete=models.SET_NULL,blank=True, null=True)
#shift_name_4 = forms.ForeignKey(Shift, verbose_name='4 Schichtname', related_name='shift_name4',on_delete=models.SET_NULL,blank=True, null=True)
#shisetsu_name_4 = forms.ForeignKey(Shisetsu, verbose_name='4 Einrichtungen', related_name='shisetsu_name4',on_delete=models.SET_NULL,blank=True, null=True)
Da die Eingabesteuerung zunächst nicht gut verknüpft war, gibt es Hinweise auf das Einfügen von Modellen (lacht)
Ich habe HTML ein wenig bearbeitet
schedule/update.html
{% extends 'schedule/base.html' %}
{% block header %}
{% endblock header %}
{% block content %}
<form action="" method="POST">{% csrf_token %}
<P >Mitarbeitername: {{ User_list.last_name }} {{ User_list.first_name }}</P>
<p>Datum: {{ Schedule_list.date }}</p>
{{ form.as_p }}
{% csrf_token %}
<input class="btn btn-primary" type="submit" value="aktualisieren">
<a href="{% url 'schedule:homeschedule' %}" class="btn-secondary btn active">Rückkehr</a>
</form>
{% endblock content %}
Jetzt können Sie zu dem Monat zurückkehren, den Sie bearbeiten, indem Sie auf dem Korrekturbildschirm auf die Schaltfläche Aktualisieren klicken.
Recommended Posts