Seite 1 von 1

[Django] Erstellen einer DB-Tabelle unterdrücken

Verfasst: Sonntag 30. Dezember 2007, 14:23
von /dev/null
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.

Verfasst: Sonntag 30. Dezember 2007, 14:36
von Leonidas
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.

Verfasst: Sonntag 30. Dezember 2007, 14:47
von /dev/null
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.

Verfasst: Sonntag 30. Dezember 2007, 14:54
von sma
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

Verfasst: Sonntag 30. Dezember 2007, 15:08
von /dev/null
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.

Verfasst: Sonntag 30. Dezember 2007, 15:14
von sma
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

Verfasst: Sonntag 30. Dezember 2007, 15:30
von /dev/null
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.

Verfasst: Sonntag 30. Dezember 2007, 16:31
von sma
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

Verfasst: Sonntag 30. Dezember 2007, 19:11
von /dev/null
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.