[PYTHON] Erstellen Sie ein Modell für Ihren Django-Zeitplan

Wir werden eine App erstellen, um eine Verschiebungstabelle zu erstellen.

terminal


python3 manage.py startapp schedule

Fügen Sie die App Ihren Einstellungen hinzu.

config/settings.py


INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'accounts.apps.AccountsConfig',
    'shisetsu',
    'colorfield',
    'schedule'
]

Wir werden eine Tabelle in der erstellten Zeitplan-App erstellen.

Die Schichten sollten so verwaltet werden, dass A von 9:00 bis 18:00 Uhr ist. Möglicherweise können Sie es auch so haben, als wären Sie bezahlt worden. Deshalb werde ich versuchen, es im Textfeld zu haben.

In Bezug auf den Zeitplan bedeutet dies, dass Sie mehrere Schichten pro Tag eingeben und in mehreren Einrichtungen arbeiten können. Es ist noch nie eine Schicht von 3 oder mehr eingetreten.

Basierend darauf werde ich versuchen, es mit der folgenden Tabelle zu machen.

schedule/models.py


from django.db import models
from shisetsu.models import *
 from accounts.models import *

# Create your models here.

class Shift(models.Model):
    id = models.IntegerField(verbose_name='Schicht-ID',primary_key=True)
    name = models.CharField(verbose_name='Name verschieben', max_length=1)
    start_time = models.TimeField(verbose_name="Startzeit")
    end_time = models.TimeField(verbose_name="Endzeit")
    wrok_time = models.IntegerField(verbose_name='Arbeitszeit')

    def __str__(self):
        return self.name

class Schedule(models.Model):
    id = models.IntegerField(verbose_name='Zeitplan-ID',primary_key=True)
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    date = models.DateField(verbose_name='Datum')
    shift_id_1= models.ForeignKey(Shift, verbose_name='1 Schichtname', on_delete=models.CASCADE)
    shisetsu_id_1 = models.ForeignKey(Shisetsu, verbose_name='1 Einrichtung', on_delete=models.CASCADE)
    shift_id_2 = models.ForeignKey(Shift, verbose_name='2 Schichtname', on_delete=models.CASCADE)
    shisetsu_id_2 = models.ForeignKey(Shisetsu, verbose_name='2 Einrichtungen', on_delete=models.CASCADE)
    shift_id_3 = models.ForeignKey(Shift, verbose_name='3 Schichtname', on_delete=models.CASCADE)
    shisetsu_id_3 = models.ForeignKey(Shisetsu, verbose_name='3 Einrichtungen', on_delete=models.CASCADE)
    shift_id_4 = models.ForeignKey(Shift, verbose_name='4 Schichtname', on_delete=models.CASCADE)
    shisetsu_id_4 = models.ForeignKey(Shisetsu, verbose_name='4 Einrichtungen', on_delete=models.CASCADE)

Ich konnte das nicht machen

2 bis 3 Stunden, um dies zu überprüfen Dies ist die Migration.

schedule/models.py


from django.db import models
from shisetsu.models import *
from accounts.models import *

# Create your models here.

class Shift(models.Model):
    id = models.IntegerField(verbose_name='Schicht-ID',primary_key=True)
    name = models.CharField(verbose_name='Name verschieben', max_length=1)
    start_time = models.TimeField(verbose_name="Startzeit")
    end_time = models.TimeField(verbose_name="Endzeit")
    wrok_time = models.IntegerField(verbose_name='Arbeitszeit')

    def __str__(self):
        return self.name
    
class Schedule(models.Model):
    id = models.IntegerField(verbose_name='Zeitplan-ID',primary_key=True)
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    date = models.DateField(verbose_name='Datum')
    shift_name_1 = models.ForeignKey(Shift, verbose_name='1 Schichtname', related_name='shift_name1',on_delete=models.SET_NULL,null= True)
    shisetsu_name_1 = models.ForeignKey(Shisetsu, verbose_name='1 Einrichtung', related_name='shisetsu_name1',on_delete=models.SET_NULL,null= True)
    shift_name_2 = models.ForeignKey(Shift, verbose_name='2 Schichtname', related_name='shift_name2',on_delete=models.SET_NULL,null= True)
    shisetsu_name_2 = models.ForeignKey(Shisetsu, verbose_name='2 Einrichtungen', related_name='shisetsu_name2',on_delete=models.SET_NULL,null= True)
    shift_name_3 = models.ForeignKey(Shift, verbose_name='3 Schichtname', related_name='shift_name3',on_delete=models.SET_NULL,null= True)
    shisetsu_name_3 = models.ForeignKey(Shisetsu, verbose_name='3 Einrichtungen', related_name='shisetsu_name3',on_delete=models.SET_NULL,null= True)
    shift_name_4 = models.ForeignKey(Shift, verbose_name='4 Schichtname', related_name='shift_name4',on_delete=models.SET_NULL,null= True)
    shisetsu_name_4 = models.ForeignKey(Shisetsu, verbose_name='4 Einrichtungen', related_name='shisetsu_name4',on_delete=models.SET_NULL,null= True)

Ich habe es endlich geschafft ... Es war lang und wenn Sie mehr als einmal in einer Tabelle auf dieselbe Tabelle verweisen möchten, müssen Sie jeden bewerteten Namen festlegen.

Die ID wurde bei der Eingabe vorläufiger Daten in die automatische Inkrementierung geändert

schedule/models.py


from django.db import models
from shisetsu.models import *
from accounts.models import *

# Create your models here.

class Shift(models.Model):
    id = models.AutoField(verbose_name='Schicht-ID',primary_key=True)
    name = models.CharField(verbose_name='Name verschieben', max_length=1)
    start_time = models.TimeField(verbose_name="Startzeit")
    end_time = models.TimeField(verbose_name="Endzeit")
    wrok_time = models.IntegerField(verbose_name='Arbeitszeit')

    def __str__(self):
        return self.name
    
class Schedule(models.Model):
    id = models.AutoField(verbose_name='Zeitplan-ID',primary_key=True)
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    date = models.DateField(verbose_name='Datum')
    shift_name_1 = models.ForeignKey(Shift, verbose_name='1 Schichtname', related_name='shift_name1',on_delete=models.SET_NULL,null= True)
    shisetsu_name_1 = models.ForeignKey(Shisetsu, verbose_name='1 Einrichtung', related_name='shisetsu_name1',on_delete=models.SET_NULL,null= True)
    shift_name_2 = models.ForeignKey(Shift, verbose_name='2 Schichtname', related_name='shift_name2',on_delete=models.SET_NULL,null= True)
    shisetsu_name_2 = models.ForeignKey(Shisetsu, verbose_name='2 Einrichtungen', related_name='shisetsu_name2',on_delete=models.SET_NULL,null= True)
    shift_name_3 = models.ForeignKey(Shift, verbose_name='3 Schichtname', related_name='shift_name3',on_delete=models.SET_NULL,null= True)
    shisetsu_name_3 = models.ForeignKey(Shisetsu, verbose_name='3 Einrichtungen', related_name='shisetsu_name3',on_delete=models.SET_NULL,null= True)
    shift_name_4 = models.ForeignKey(Shift, verbose_name='4 Schichtname', related_name='shift_name4',on_delete=models.SET_NULL,null= True)
    shisetsu_name_4 = models.ForeignKey(Shisetsu, verbose_name='4 Einrichtungen', related_name='shisetsu_name4',on_delete=models.SET_NULL,null= True)

Als Fortsetzung möchte ich die einmal vorgenommene Verschiebung korrekt anzeigen Es ist ein Ärger, aber ich werde eine einmonatige Schicht von Hand machen.

Wenn ich versuche, einen Zeitplan zu registrieren, ist die Schicht ein erforderlicher Eintrag Ich habe es veröffentlicht.

schedule/models.py


from django.db import models
from shisetsu.models import *
from accounts.models import *

# Create your models here.

class Shift(models.Model):
    id = models.AutoField(verbose_name='Schicht-ID',primary_key=True)
    name = models.CharField(verbose_name='Name verschieben', max_length=1)
    start_time = models.TimeField(verbose_name="Startzeit")
    end_time = models.TimeField(verbose_name="Endzeit")
    wrok_time = models.IntegerField(verbose_name='Arbeitszeit')

    def __str__(self):
        return self.name
    
class Schedule(models.Model):
    id = models.AutoField(verbose_name='Zeitplan-ID',primary_key=True)
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    date = models.DateField(verbose_name='Datum')
    shift_name_1 = models.ForeignKey(Shift, verbose_name='1 Schichtname', related_name='shift_name1',on_delete=models.SET_NULL,null= True)
    shisetsu_name_1 = models.ForeignKey(Shisetsu, verbose_name='1 Einrichtung', related_name='shisetsu_name1',on_delete=models.SET_NULL,blank=True, null=True)
    shift_name_2 = models.ForeignKey(Shift, verbose_name='2 Schichtname', related_name='shift_name2',on_delete=models.SET_NULL,blank=True, null=True)
    shisetsu_name_2 = models.ForeignKey(Shisetsu, verbose_name='2 Einrichtungen', related_name='shisetsu_name2',on_delete=models.SET_NULL,blank=True, null=True)
    shift_name_3 = models.ForeignKey(Shift, verbose_name='3 Schichtname', related_name='shift_name3',on_delete=models.SET_NULL,blank=True, null=True)
    shisetsu_name_3 = models.ForeignKey(Shisetsu, verbose_name='3 Einrichtungen', related_name='shisetsu_name3',on_delete=models.SET_NULL,blank=True, null=True)
    shift_name_4 = models.ForeignKey(Shift, verbose_name='4 Schichtname', related_name='shift_name4',on_delete=models.SET_NULL,blank=True, null=True)
    shisetsu_name_4 = models.ForeignKey(Shisetsu, verbose_name='4 Einrichtungen', related_name='shisetsu_name4',on_delete=models.SET_NULL,blank=True, null=True)

Vorübergehend registrierte 60 Schichtdaten

image.png

image.png

Von hier aus werde ich einen Bildschirm erstellen, der wie die Verschiebung aussieht

Recommended Posts

Erstellen Sie ein Modell für Ihren Django-Zeitplan
Erstellen Sie einen Django-Zeitplan
[Django] Erstellen Sie ein Modell, das für Telefonnummer / Postleitzahl geeignet ist
Erstellen Sie mit Django ein Dashboard für Netzwerkgeräte!
[Python] 2 Erstellen Sie eine Risiko-Rendite-Karte für Ihr Asset-Portfolio
Erstellen Sie eine Homepage mit Django
Erstellen Sie einen Django-Anmeldebildschirm
Erstellen Sie Ihre eigene Django-Middleware
Erstellen Sie mit Django eine API für die soziale Integration von Smartphone-Apps
[Python] Erstellen Sie mit Django einen Bildschirm für den HTTP-Statuscode 403/404/500
Schritte zum Erstellen eines Django-Projekts
[Django] Erstellen Sie Ihre eigene 403, 404, 500-Fehlerseite
Erstellen Sie mit Django einen Datei-Uploader
Erstellen Sie mit Django einen LINE-Bot
Erstellen Sie eine Python-Umgebung auf Ihrem Mac
Erstellen wir eine virtuelle Umgebung für Python
Befehle zum Erstellen eines neuen Django-Projekts
Holen Sie sich ein Referenzmodell mit Django Serializer
Erstellen der ersten App mit Django Startprojekt
Erstellen Sie ein Hatena-Wörterbuch für SKK (zusätzlich)
Implementieren Sie ein benutzerdefiniertes Benutzermodell in Django
Schreiben Sie kurz if-else von Django Template
Erstellen Sie ein Überlebensvorhersagemodell für Passagiere der Kaggle Titanic, ohne Python zu verwenden
Django-Modell: ManyToManyField
Erstellen Sie mit Minette für Python einen LINE BOT
Django Tutorial Zusammenfassung für Anfänger von Anfängern ② (Model, Admin)
Internationalisierungsunterstützung mit Django 1.9
Erstellen Sie in Python ein einfaches Momentum-Investmentmodell
Erstellen Sie mit Django eine Hallo-Welt-Anwendung mit nur einer Datei
So erstellen Sie eine Rest-API in Django
Bis Sie eine neue App in Django erstellen
[Maschinelles Lernen] Erstellen Sie ein Modell für maschinelles Lernen, indem Sie Transferlernen mit Ihrem eigenen Datensatz durchführen
Erstellen Sie ein Rad Ihres eigenen OpenCV-Moduls
Ich möchte zum ersten Mal eine Django-Studie zur Mittagsdatenbank [EP1] erstellen
Ich möchte zum ersten Mal eine Django-Studie zum Mittagessen [EP1-4] erstellen
Erstellen Sie einen Datensatz mit Bildern, die für das Training verwendet werden sollen
Erstellt ein Narrbild für das Modell der Untertitelgenerierung
Erstellen Sie eine Todo-App mit Django REST Framework + Angular
Erstellen Sie Ihre eigenen Big Data in Python zur Validierung
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 1 ~
Erstellen Sie unter Linux einen QR-Code für die URL
Verschrotten Sie Ihren Qiita-Artikel, um eine Wortwolke zu erstellen
Lassen Sie uns eine Todo-App mit dem Django REST-Framework erstellen
[Go] So erstellen Sie einen benutzerdefinierten Fehler für Sentry
Todo-App mit Django erstellen ③ Aufgabenlistenseite erstellen
Machen Sie das Modell zu einer Zeichenfolge in der Django-HTML-Vorlage
So erstellen Sie ein lokales Repository für Linux
Erstellen Sie in Docker eine Ebene für AWS Lambda Python
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 2 ~
Erstellen Sie mit PyQt5 und PyQtGraph einen 3D-Modell-Viewer
Für mich als Django-Anfänger (1) -Erstellen eines Projekts / einer App-
Für mich als Django-Anfänger (4) - Erstellen Sie eine Memo-App-
Todo-App mit Django erstellen ⑤ Funktion zum Bearbeiten von Aufgaben erstellen
xgboost: Effektives Modell für maschinelles Lernen für Tabellendaten
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 3 ~
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 4 ~
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 5 ~