Wie können Sie Modelle überschreiben, die in installierten Apps in Django definiert sind?

8

Ist es möglich, ein in einer INSTALLED_APP verwendetes Modell neu zu definieren, ohne die betreffende App zu ändern? Zum Beispiel hat django-basic-blog ein Post-Modell, dem ich ein Feld hinzufügen möchte. Ich könnte django-basic-blog direkt bearbeiten, aber für die Codeportierbarkeit möchte ich darauf aufbauen. Ich möchte keine Unterklasse erstellen, da ich alle vorhandenen Verweise auf das Post-Modell beibehalten möchte. Vielen Dank im Voraus!

    
Hakan B. 24.11.2010, 22:23
quelle

1 Antwort

11
  1. Wenn Sie eine Unterklasse der Originalfelder erstellen, werden diese immer noch in der Originaltabelle gespeichert, sodass die Referenzen gültig bleiben.

  2. Wenn Sie eine existierende Klasse affen-patchen möchten, was meistens keine empfehlenswerte Dirty-Methode ist, können Sie contribute_to_class in einer models.py -Datei verwenden, die in einer App nach der gewünschten geladen wird zu ändern:

models.py:

%Vor%

Wenn Sie das so machen, müssen Sie immer das Risiko eingehen, dass Ihre Änderungen mit anderen Teilen des Codes kollidieren und Ihr Code schwerer zu pflegen ist!

    
Bernhard Vallant 24.11.2010, 23:41
quelle

Tags und Links