Domanda

Supponiamo ad esempio che io abbia un'app Blog che voglio poter inserire in diversi progetti, ma voglio sempre che il Blog sia associato ad altri modelli. Ad esempio, in un caso potrei volerlo associare a un utente:

site.com/someuser/blog

Ma su un altro sito voglio che sia associato, diciamo, a una scuola:

site.com/someschool/blog

Esiste un modo per rendere collegabile l'app Blog in modo che non sia necessario ridefinire il modello (aggiungendo un campo chiave esterna) ogni volta che lo trascino in un progetto?

È stato utile?

Soluzione

Potresti voler esaminare il framework ContentTypes, l'ho usato per creare un'app di commento che può essere utilizzata per commentare qualsiasi modello nel database (per diversi motivi, non volevo usare l'app di commento standard di django) .

http://docs.djangoproject.com/en/dev/ rif / contrib / ContentTypes /

Altri suggerimenti

Esistono diversi dettagli importanti per assicurarsi che un'app possa essere riutilizzabile e penso che sia meglio collegarsi a due dei più importanti set di documentazione sull'argomento:

Relazioni generiche ti consentono di avere una chiave esterna per qualsiasi altro modello. Tuttavia, dalla tua domanda non è chiaro a quale tipo di oggetto desideri collegare una chiave esterna. Ho il sospetto che la relazione con una chiave esterna non sia davvero generica: semplicemente non hai individuato un'altra parte del tuo sistema che potrebbe anche essere un'app riutilizzabile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top