Definire ManyToMany relazione a un'altra applicazione in Django
Domanda
Ho applicazioni utenti e progetti e vorrei definire un'altra applicazione chiamata ruoli per estendere django-auth per ogni singolo progetto.
Ho definito ProjectMembership in app ruoli come un modello di relazione ManyToMany personalizzato. Ma come faccio a definire il campo M2M in uso o il modello del progetto con dichiarazione through
?
Quindi domanda è: possiamo definire il campo di modello da un altro app?
Soluzione
Non credo sia possibile, e anche se è possibile, allora è a mio parere una pessima soluzione.
Credo che la soluzione migliore è quella di creare il modello ProjectMembership con due FK di, uno a Utente e uno a progetto. Allora avete un Manuale M2M relazione, e hai solo non è possibile utilizzare tutte belle Django caratteristiche per lavorare con le relazioni M2M.
Se invece desidera che questa funzionalità (non sono necessari), allora è necessario modificare l'utente o il modello del progetto.
Altri suggerimenti
Sì, è possibile, Django creerà automaticamente il rapporto inverso per voi. Utilizzare related_name
per dargli un nome!
Modifica (denaro patch) il modello User
non è una buona idea. Se si desidera estendere, farlo sia tramite:
- eredità
- un profilo oggetto (che è il modo consigliato da Django).