[PYTHON] Zeigen Sie die Django-Schichttabelle an! Unterstützt das 20-Tage-Schließen

Ich habe eine Schichtanzeige vom 1. bis zum Monatsende erstellt.

Ich blieb auf verschiedene Weise stecken und es funktionierte überhaupt nicht ...: frowning2:

Zunächst habe ich versucht, die Zeitplantabelle für diesen Monat als Zeitplan-Homepage anzuzeigen, aber ich kann sie mit Umleitung nicht richtig aufrufen ... (Dies wurde auch jetzt noch nicht gelöst.)

Und ich versuche gerade, die Daten und Tage oben in der Zeitplantabelle anzuordnen.

schedule/views.py


from django.shortcuts import render
from shisetsu.models import *
from accounts.models import *
from .models import *
from django.shortcuts import redirect
import calendar
import datetime
from datetime import timedelta
from datetime import datetime as dt

# Create your views here.

def homeschedule(request):
    from datetime import datetime
    now = datetime.now()
    return redirect('schedule/monthschedule/%s/%s/' % (now.year,now.month,))  #Automatisch zum Schichtbildschirm dieses Monats umleiten

def monthschedulefunc(request,year_num,month_num):
    year, month = int(year_num), int(month_num)
    object_list = Schedule.objects.filter(date__year= year, date__month= month).order_by('date')
    #Ermitteln Sie die Anzahl der Tage im Schichtbereich
    startdate = datetime.date(year,month-1,21)
    enddate = datetime.date(year,month,20)
    kaisu = enddate - startdate
    kaisu = int(kaisu.days)
    
    #Machen Sie eine Liste von Daten und Tagen
    hiduke = str(year) + "-" + str(month) + "-" + str(20)
    date_format = "%Y-%m-%d"
    hiduke = dt.strptime(hiduke, date_format)
    calender_object = [hiduke]
    for i in range(kaisu):
        hiduke = hiduke + timedelta(days=1)
        calender_object.append(hiduke)


image.png

Es war der 20. bis 20. (lacht) Ich versuche es zu beheben, damit der Tag angezeigt werden kann, aber es waren ungefähr 2 Stunden ...

schedule/views.py


    user_list = User.objects.all()
    context = {
        'object_list': Schedule.objects.all(),
        'staff_list' : User.objects.all(),
    }
    return render(request,'schedule/month.html', {
    'object_list': object_list,
    'user_list': user_list,
    'calender_object': calender_object,
    'weekdays':['Mond','Feuer','Wasser','Holz','Geld','Boden','Tag',],
    }, )

Ich möchte den Tag an Wochentagen übergeben und ihn aus dem Tageswert auf der HTML-Seite extrahieren, aber ich weiß nicht ... Und diese Situation ...

image.png

html:templasts/schedule.month.html


{% extends 'schedule/base.html' %}
{% block header %}
{% endblock header %}

{% block content %}
<table class="table table-striped table-bordered">
<thead>
    <tr align="center" class="info">    <!--Datum-->
        <th rowspan="2"></th>
        {% for item in calender_object %}
                <th class="day_{{ item.date }}">{{ item.date | date:"d" }}</th>
        {% endfor %}
    <tr align="center" class="info">   <!--Tag-->
        {% for item in calender_object %}
            <th class="day_{{ item.date }}">{{ item.date | date:"w" }}</th>
        {% endfor %}
    </tr>
</thead>

Am Ende kann ich den Tag nach Zahlen abrufen, aber ich habe keine Ahnung, wie ich den Wert dieser Zahl von Weekdyas nehmen und anzeigen soll. Hier habe ich beschlossen, ein Objekt für den Tag zu wechseln und zu erstellen und es zu übergeben

schedule/views.py



from django.shortcuts import render
from shisetsu.models import *
from accounts.models import *
from .models import *
from django.shortcuts import redirect
import calendar
import datetime
from datetime import timedelta
from datetime import datetime as dt

# Create your views here.

def homeschedule(request):
    from datetime import datetime
    now = datetime.now()
    return redirect('schedule/monthschedule/%s/%s/' % (now.year,now.month,))  #Automatisch zum Schichtbildschirm dieses Monats umleiten

def monthschedulefunc(request,year_num,month_num):
    year, month = int(year_num), int(month_num)
    object_list = Schedule.objects.filter(date__year= year, date__month= month).order_by('date')
    #Ermitteln Sie die Anzahl der Tage im Schichtbereich
    startdate = datetime.date(year,month-1,21)
    enddate = datetime.date(year,month,20)
    kaisu = enddate - startdate
    kaisu = int(kaisu.days)
    
    #Machen Sie eine Liste von Daten und Tagen
    hiduke = str(year) + "-" + str(month) + "-" + str(20)
    date_format = "%Y-%m-%d"
    hiduke = dt.strptime(hiduke, date_format)
    weekdays = ["Mond","Feuer","Wasser","Holz","Geld","Boden","Tag"]
    calender_object = []
    youbi_object = []
    for i in range(kaisu):
        hiduke = hiduke + timedelta(days=1)    
        calender_object.append(hiduke)
        youbi = weekdays[hiduke.weekday()] 
        youbi_object.append(youbi)

image.png

Ich konnte tun, was ich vorerst tun wollte, also ist es OK! Es ist am besten, wenn Sie den Code ordentlich schreiben, aber ich denke, es ist wichtig, in der Lage zu sein, das zu tun, was Sie zuerst tun möchten (Entschuldigung (lacht))

Ich möchte den Inhalt des Kalenders erstellen, aber es scheint ziemlich schwierig zu sein. Zunächst möchte ich die Arbeit jedes Mitarbeiters anzeigen können.

Ich habe begonnen, den Inhalt anzuzeigen, aber es funktioniert nicht mehr. Entwicklung ist wirklich schwer (lacht)

Wenn es einen Meister gibt, scheint der Fortschritt schneller zu sein, wenn Sie mich schrittweise unterrichten können.

Was falsch ist, ist, dass ich jeden Mitarbeiter (Benutzer) verarbeiten wollte, also habe ich den Benutzer herausgenommen, die Objekte mit den Zeitplaninformationen in der richtigen Reihenfolge herausgenommen und verarbeitet, wenn der Benutzername der gleiche war. Mit allen Mitteln

schedule.html


{% if staff.username == item.user %}
wird bearbeitet
{% endif %}

Dieser Teil beurteilt nicht gut ...

Ich habe dies auch überprüft, aber ich weiß es nicht, daher werde ich eine andere Methode in Betracht ziehen

Ich frage mich, ob es intern kombiniert und angezeigt werden könnte, bin mir aber immer noch nicht sicher. Was ich nicht wirklich verstehe, ist, dass die Benutzertabelle nach Djangos Standard implementiert ist, daher verstehe ich nicht, ob sie normal gehandhabt werden kann ...

Wie kann ich erreichen, was ich tun möchte ... Da es sich in Django nicht um eine SQL-Anweisung handelt, kann dies auch die Ursache für Unverständnis sein

Ich verstehe wirklich, dass es viele Leute gibt, die programmieren können ... Selbst wenn ich eines löse, stolpere ich sofort wieder und es mangelt viel an Rücksichtnahme (lacht)

Aber lasst uns unser Bestes geben, um beeindruckt zu sein, wenn wir umziehen

Recommended Posts

Zeigen Sie die Django-Schichttabelle an! Unterstützt das 20-Tage-Schließen
Django Python Verschiebungstabelle
Ich möchte in der Django-Verschiebungstabelle scrollen, aber ...
Django-Schichttabelle Zeigen Sie nur die Einrichtungen an, zu denen Sie gehören
Django ~ Lass es uns im Browser anzeigen ~
Es wurde eine Funktion hinzugefügt, um gewünschte Verschiebungen in der Django-Verschiebungstabelle zu registrieren
Django Shift Table Shift Datenerstellungsfunktion abgeschlossen
Fügen Sie Funktionen zum Ändern der Django-Tagesschichtinformationen hinzu
Zeigen Sie das 邊 an
Django-Tabellenerstellung
[Jjango] Zeigt die Fehlermeldung an, die durch Auslösen von ValidationError angegeben wurde
[Django] Tabelle abschneiden (alle Tabellendaten löschen)