[Django] Erstellen einer DB-Tabelle unterdrücken

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
/dev/null
User
Beiträge: 6
Registriert: Sonntag 30. Dezember 2007, 14:08

Hallo in die Runde,

Gibt es eine Möglichkeit, bei einer Klasse in models.py die Erstellung einer DB-Tabelle mittels syncdb zu unterdrücken? In meinem Datenmodell gibt es mehrere Tabellen, die viele Attribute gemeinsam haben. Jetzt möchte ich eine Art Basisklasse erstellen (von models.Model abgeleitet), von der nun meine Datenklassen abgeleitet werden sollen. Die Basisklasse brauche ich in der DB nicht.

Ich dachte, daß es vielleicht ein Attribut wie z.B. "suppress_table_creation = True" in dem Admin-Klasse gibt; in der Dokumentation wurde ich jedoch nicht fündig. Hat da einer eine Idee? Natürlich könnte ich nach jedem syncdb die Basistabelle händisch in der DB löschen, aber das ist nicht wirklich "sauber".

TIA & lg,
c/hris.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Du kannst sowieso bei den Django-Models seit magic-removal nicht mehr mit Vererbung arbeiten, von da her hast du so ein Problem gar nicht erst.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
/dev/null
User
Beiträge: 6
Registriert: Sonntag 30. Dezember 2007, 14:08

Leonidas hat geschrieben:Du kannst sowieso bei den Django-Models seit magic-removal nicht mehr mit Vererbung arbeiten, von da her hast du so ein Problem gar nicht erst.
So, jetzt mußte ich erst mal nachlesen, was magic-removal bedeutet (new-born Django-user!). Nun, das kann ich so nicht unterschreiben - in der von mir verwendeten grad vor ein paar Tagen runtergeladenen Version (0.96.1) geht das sehr wohl.

lg,
c/hris.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Geht AFAIK nicht, wird aber kontrovers diskutiert, siehe Ticket #3163.

PS: Nimm lieber die Version aus dem SVN statt 0.96, dort sind einige Verbesserungen vorgenommen worden, etwa durchgängige Benutzung von Unicode oder automatisches Escapen von Werten in Templates.

Stefan
/dev/null
User
Beiträge: 6
Registriert: Sonntag 30. Dezember 2007, 14:08

Hallo Stefan,

Danke für die Antwort. Wenn ich das Ticket richtig interpretiere, dann ist genau dieses Feature jetzt implementiert worden (create_db_schema=False). Dann werd ich mal die SVN-Version runterladen. Danke!

lg,
c/hris.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Nope, es gibt einen Patch für die SVN-Version (r6977), doch der Code wurde noch nicht offiziell akzeptiert und eingebaut. Du solltest dir aber deine Version selbst patchen können, wenn du mit einem eigenen Fork leben kannst. In der in den Kommentaren erwähnten Diskussion war James Bennett ja eher dagegen mit dem Argument, wenn dir syncb nicht passt, dann benutzt es einfach nicht...

Stefan
/dev/null
User
Beiträge: 6
Registriert: Sonntag 30. Dezember 2007, 14:08

Hi,

Ahja, grad gesehen, dasses nicht eingebaut ist. Aber: es gibt einen Eintrag vom 1.12., der da lautet: "stage changed from Design decision needed to Accepted." Heißt das nicht, daß der Code in die offizielle Version eingebaut wird?

lg,
c/hris.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Ich würde nicht die Luft anhalten... das heißt erstmal nur, dass das Ticket von dem Topf, in dem noch 131 Issues lagern in den gekommen ist, in dem 438 Issues auf Bearbeitung warten :)

Stefan
/dev/null
User
Beiträge: 6
Registriert: Sonntag 30. Dezember 2007, 14:08

Hallo Stefan,

Ok, got your point ;-)

Um zum Ursprungsthema zurückzukommen - wie würdet ihr vorgehen? Ich habe jetzt ein Datenbankmodell, in dem ein Bürgermeister, ein Pfarrer, etc. vorkommen (jetzt mal nur als Beispiel). Im Endeffekt wären das alles Subklassen von Person, wo der Großteil der Eigenschaften (Attribute und Funktionen) implementiert sind. Person selber brauch ich in der Datenbank aber nicht.

Was ist der präferierte Weg hier?

lg,
c/hris.
Antworten