Models
Verfasst: Dienstag 10. September 2019, 15:16
Hallo zusammen,
Aktuell beschäftige ich mich ein wenig mit Datenbanken und stelle fest: ich habe einfach zu wenig Ahnung, sowohl von den Möglichkeiten an sich, als auch die Möglichkeiten die Django bietet, also versuche ich es zu lernen. Learning by Doing.
Nun habe ich mir ein paar recht greifbare Dinge ausgedacht und diese auch so umgesetzt, dass sie irgendwie funktionieren.
Eines meiner vielen Probleme ist, dass ich nicht weiß wie ich mit wiederkehrenden Elementen umzugehen habe.
Bei zwei Anliegen komme ich aber nicht weiter:
1. Aufträge geben
Ziel: ein Kunde (Customer) hat einen Auftrag (Order). Dieser Auftrag kann ein einmaliges Event mit Start und Endzeitpunkt an einem bestimmten Tag sein, oder ein geteiltes Event (z.B. Von 12-14 und von 17-20 Uhr) sowie in unregelmäßigen Abständen nach genau diesem Prinzip mehrfach im Monat stattfinden.
Dazu habe ich folgende Tabellen angelegt:
Das Problem hier: besagte Unterbrechungen sind nur umsetzbar, indem ich für jede Pause einen neuen Eintrag anlege.
2. Statistiken
Es wird eine Datenbank für Ereignisse an verschiedenen Kreuzungen (Location) angelegt. Dabei wirs alle 15 Minuten ein Ereignis (Event) angelegt bezüglich Wetter, Fußgängerzahl an der Ampel, Autos und Unfälle.
Auch hier habe ich Ereignisse angelegt:
Das Problem hier: ich habe von der Uni noch einen alten Datensatz (csv) als Vorbereitung auf das Laborpraktikum zum auswerten bekommen. Am liebsten hätte ich die Zuordnung der Ereignisse direkt als ManyToMany Field an der Location. Wenn ich das so mache, hängt sich der ganze Adminbereich beim Erstellen oder Öffnen eines Objektes auf - der Datensatz hat über 1mb.
Gefühlt ist beides recht suboptimal umgesetzt, erfüllt halt nur irgendwie seinen Zweck.
Gibt es eventuell ein paar Tipps oder nette Links speziell der Umsetzung betreffend?
Aktuell beschäftige ich mich ein wenig mit Datenbanken und stelle fest: ich habe einfach zu wenig Ahnung, sowohl von den Möglichkeiten an sich, als auch die Möglichkeiten die Django bietet, also versuche ich es zu lernen. Learning by Doing.
Nun habe ich mir ein paar recht greifbare Dinge ausgedacht und diese auch so umgesetzt, dass sie irgendwie funktionieren.
Eines meiner vielen Probleme ist, dass ich nicht weiß wie ich mit wiederkehrenden Elementen umzugehen habe.
Bei zwei Anliegen komme ich aber nicht weiter:
1. Aufträge geben
Ziel: ein Kunde (Customer) hat einen Auftrag (Order). Dieser Auftrag kann ein einmaliges Event mit Start und Endzeitpunkt an einem bestimmten Tag sein, oder ein geteiltes Event (z.B. Von 12-14 und von 17-20 Uhr) sowie in unregelmäßigen Abständen nach genau diesem Prinzip mehrfach im Monat stattfinden.
Dazu habe ich folgende Tabellen angelegt:
Code: Alles auswählen
class Customer(models.Model):
first_name = models.CharField(max_length=30, blank=True)
last_name = models.CharField(max_length=30)
email = models.EmailField(primary_key=True)
def __str__(self):
return self.email
class Order(models.Model):
title = models.CharField(max_length=60)
start = models.DateTimeField()
end = models.DateTimeField()
customer = models.ForeignKey(Customer, on_delete=models.CASCADE)
def __str__(self):
return '{} // {}'.format(self.title, self.customer.email)
2. Statistiken
Es wird eine Datenbank für Ereignisse an verschiedenen Kreuzungen (Location) angelegt. Dabei wirs alle 15 Minuten ein Ereignis (Event) angelegt bezüglich Wetter, Fußgängerzahl an der Ampel, Autos und Unfälle.
Auch hier habe ich Ereignisse angelegt:
Code: Alles auswählen
class Location(models.Model):
zip_code = models.Integerfield()
start = models.DateTimeField()
def __str__(self):
return '{} // {}'.format(self.zip, self.start)
class Event(self):
weather = models.CharField(max_length = 2, choices=WEATHER)
people_count = models.Integerfield(default=0)
car_count = models.Integerfield(default=0)
crash = models.BooleanField(default=False)
location = models.ForeignKey(Location, on_delete=models.CASCADE)
Gefühlt ist beides recht suboptimal umgesetzt, erfüllt halt nur irgendwie seinen Zweck.
Gibt es eventuell ein paar Tipps oder nette Links speziell der Umsetzung betreffend?