Ich blicke schon seit längerem ab und zu auf Django und komme jetzt auch erstmal dazu, es auch wirklich zu testen.
Als erstes Beispielprojekt wollte ich eine kleine Ligaverwaltung für eine private bzw. regionale Sportliga erstellen.
Model ist fertig, Eintragen über's Admin-Interface auch kein Problem, die URLs sind auch in Ordnung, nun hänge ich doch ein wenig bei den Views. Und dabei stellt sich mir dann die grundsätzliche Frage: Wo baue ich die Logik für die Views ein? In den Views selber, oder auch im Model?
Konkret geht es darum, dass ich erst einmal nur die Tabelle der Liga ausgeben möchte (mit Punkten und Toren/Gegentoren).
Rein aus DB-Sicht würde ich mir dafür wahrscheinlich einen DB-View bauen, auf den ich dann zugreifen könnte.
Wie ist bei Django die empfohlene Vorgehensweise für sowas?
Ich freue mich auf Anregungen und Kritik!
cuthbert
Meine Models sehen wie folgt aus (ein wenig gekürzt):
Code: Alles auswählen
class Verein(models.Model):
name = models.CharField(max_length=100)
link = models.URLField(verify_exists=True, max_length=200, blank=True)
class Meta:
verbose_name_plural = 'Vereine'
def __unicode__(self):
return self.name
class Spieltag(models.Model):
nummer = models.IntegerField()
class Meta:
verbose_name_plural = 'Spieltage'
def __unicode__(self):
return '%s. Spieltag' % self.nummer
class Schiedsrichter(models.Model):
name = models.CharField(max_length=100)
class Meta:
verbose_name_plural = 'Schiedsrichter'
def __unicode__(self):
return self.name
class Spielort(models.Model):
bezeichnung = models.CharField(max_length=200)
adresse = models.CharField(max_length=200)
plz = models.CharField(max_length=5)
ort = models.CharField(max_length=100)
map24_link = models.URLField(verify_exists=True, max_length=300)
class Meta:
verbose_name_plural = 'Spielorte'
def __unicode__(self):
return self.bezeichnung
class Spiel(models.Model):
spieltag = models.ForeignKey('Spieltag')
verein_heim = models.ForeignKey('Verein', related_name='Heimteam')
verein_gast = models.ForeignKey('Verein', related_name='Gastteam')
spielort = models.ForeignKey('Spielort')
datum_zeit = models.DateTimeField(auto_now=False, auto_now_add=False)
schiedsrichter1 = models.ForeignKey('Schiedsrichter', related_name='Schiedsrichter 1', blank=True)
schiedsrichter2 = models.ForeignKey('Schiedsrichter', related_name='Schiedsrichter 2', blank=True)
gespielt = models.BooleanField()
tore_heim_gesamt = models.IntegerField(blank=True,null=True)
tore_gast_gesamt = models.IntegerField(blank=True,null=True)
class Meta:
verbose_name_plural = 'Spiele'
def __unicode__(self):
return '%s vs. %s (%s)' % (self.verein_heim.name, self.verein_gast.name, self.datum_zeit)
def paarung(self):
return '%s vs. %s (%s)' % (self.verein_heim.name, self.verein_gast.name, self.datum_zeit)
def ergebnis(self):
return '%s:%s' % (self.tore_heim_gesamt, self.tore_gast_gesamt)