Umgang mit mehreren Apps, die Verwaltungsbefehle in Django überschreiben

9

Ich habe ein Problem, bei dem mehr als eine App versucht, denselben Verwaltungsbefehl in einem Django-Projekt zu überschreiben.

  1. Gibt es vernünftige Wege, damit umzugehen?
  2. Was hat Priorität - die App, die zuerst in INSTALLED_APPS oder die zuletzt definierte definiert wurde?
  3. Ist es möglich, den zuletzt definierten Verwaltungsbefehl effektiv abzuleiten, anstatt ihn einfach zu ersetzen?

Für den Kontext versuche ich django_pdb (siehe github ) zu verwenden, um besser mit south zu arbeiten. und django.contrib.staticfiles .

    
Tom Christie 29.12.2011, 17:05
quelle

2 Antworten

3

2,5 Jahre später, aber falls jemand das gleiche Problem hat und nach einer Google-Suche hier landet, habe ich eine kleine Django-App erstellt, die sich mit diesem Fall befasst: django-mcmo ('Management Command Multiple Override'), verfügbar auf pypi . Es hat Einschränkungen, funktioniert aber wie erwartet.

Arbeiten mit django 1.4 bis 1.8 und py 2 und 3, willkommene Beiträge auf bitbucket repo .

    
ouk 11.08.2014 03:08
quelle
1

Die einfachste Antwort, die ich kenne, ist: Strukturieren Sie Ihr Projekt so, dass Sie eines davon ändern und eine Aufzeichnung Ihrer Änderungen speichern können, damit Sie es auf zukünftige Versionen anwenden können.

Für meine Projekte habe ich gerne:

%Vor%

Fügen Sie dann explizit / lib dem Pfad in setup.py

hinzu %Vor%

Ich bin wahrscheinlich weit wahrscheinlicher als der Durchschnitt, eine App zu nehmen, sie zu installieren und dann 10% davon zu ändern, damit sie genau so funktioniert, wie ich es möchte.

Der Vorteil davon ist: 1) die meisten Abhängigkeiten werden mit dem Code geliefert und werden in GIT nachverfolgt. 2) keine Chance für eine systemweite Änderung, unerwartete Fehler in einer App zu verursachen, wenn Sie mehrere Apps von demselben Rechner aus ausführen ) Leicht zu ändern, mit Revisionshistorie, alles und alles in der App.

Wenn Sie nicht zu tief in die Verwaltungsbefehle von South eingedrungen sind und django_pdb nie benutzt haben, wird Ihr spezielles Problem möglicherweise nicht mit der Methode "Eine lokale Kopie erstellen und umbenennen" gelöst, aber ich teile es für den Fall / p>     

Ted 29.12.2011 17:31
quelle

Tags und Links