Selbstgespräche über best practice patterns bei Django

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

mitsuhiko hat geschrieben:Dennoch muss ich mich den Vorrednern anschließen: das Django Admin Panel / databrowser kannst du für sowas wie ein Browserspiel vergessen.
Wieso? Neu ein Gefühl oder gibt es konkrete Beispiele?

Bei 1000 AD steckt ein erschreckend simples Datenmodell dahinter. Das von Stellar Crisis ist komplexer, aber alles lässt sich auf 1:N-Relationen (man braucht noch nicht einmal N:M, da das Spiel selbst alles in assoziativen Arrays ablegt) abbilden. Lästig empfinde ich da eher die Anzahl der Tabellen und Relationen die man braucht. Im Original gibt es den Fall, dass zu einem Spieler gespeichert wird, welche Planeten er kennt. Da jeder Planet durch eine X,Y-Koordinate eindeutig identifiziert wird, wird für den Spieler einfach ein String mit diesen Koordinaten, jeweils durch ein Leerzeichen getrennt abgelegt und darin gesucht. Eigentlich ist das aber eine Relation zwischen Planeten (`System`) und Spielern (`Participant`), die man so modellieren könnte und sich dann z.B. prima im Admin UI anschauen kann.

Code: Alles auswählen

class Exploration(models.Model):
    participant = models.ForeignKey(Participant, related_name='explored_systems')
    system = models.ForeignKey(System, related_name='explored_by_participants')

class System...
    def mark_as_explored_by(participant):
        if self not in participant.explored_systems:
            self.explored_by_participants.create(participant=participant)
mitsuhiko hat geschrieben:Ich hab gerade selber eine etwas größere Django Anwendung zum Bearbeiten und dort hauen wir gerade das Django Admin Interface Weg weil unsere Models so kompliziert geworden sind, dass das Admin Interface unbrauchbar wurde.
Ich würde das gerne verstehen - schon um zu wissen, ob wir in der Firma da auch mal Probleme bekommen könnten und wäre daher an konkreten Beispielen interessiert? Zu viele Daten? Zu komplexere Relationen?

Stefan
Antworten