2009-05-04 8 views
6

Sagen Sie zum Beispiel, ich habe eine Blog-App, die ich in verschiedene Projekte einfügen kann, aber ich möchte immer, dass der Blog mit einem anderen Modell verknüpft wird. Zum Beispiel in einem Fall kann ich möchte es einem Benutzer zugeordnet werden:Wie lässt sich eine Django-App steckbar machen?

site.com/someuser/blog

Aber auf einer anderen Seite will ich es mit, sagen wir, einer Schule zugeordnet werden:

site.com/someschool/blog

gibt es eine Möglichkeit das Blog-App steckbar zu machen, so dass es nicht notwendig ist, das Modell (das Hinzufügen eines Fremdschlüsselfeldes) neu zu definieren, wann immer ich es in ein Projekt fallen zu lassen?

+2

Check letzte django Konferenz für Vortrag über steckbare apps – yesraaj

Antwort

4

Vielleicht möchten Sie in das ContentTypes-Framework schauen, ich habe es verwendet, um eine Kommentar-App zu erstellen, mit der jedes Modell in der Datenbank kommentiert werden kann (aus verschiedenen Gründen wollte ich die Standard-Djangokommentar-App nicht verwenden)).

http://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/

6

Es gibt einige wichtige Details für dafür, dass eine Anwendung wiederverwendet werden kann, und ich denke, dass es am besten ist, zu zwei der wichtigsten Sätze der Dokumentation zu dem Thema verlinken:

3

Generic relationships können Sie einen fremden Schlüssel zu einem anderen Modell haben. Aus Ihrer Frage geht jedoch nicht hervor, um welchen Objekttyp es sich bei einem Fremdschlüssel handelt. Ich vermute, dass eine Fremdschlüsselbeziehung nicht wirklich generisch ist - Sie haben einfach keinen anderen Teil Ihres Systems entdeckt, der auch eine wiederverwendbare App sein könnte.