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?