2011-10-26 12 views
6

Mi chiedo quale sia il pensiero della gente su come unire i modelli direttamente all'autore. Oggetto utente rispetto al modello profilo dell'utente.Devo ForeignKey per Django User o un modello Profile?

Sto memorizzando alcuni tipi diversi di modelli che il mio utente sta aggiungendo nella mia app. Gli utenti delle app cercheranno altri utenti tramite criteri su questi modelli.

Da un lato, sto pensando che se mi unisco direttamente all'Utente, allora non avrò bisogno di fare request.user.get_profile() ogni volta che ho bisogno di prendere i record dell'Utente, e non presuppone che un utente abbia sempre un profilo (lo fanno nella mia app al mo, ma comunque). Questo lascia il modello del profilo come solo contenente i dettagli di contatto dell'utente.

D'altra parte, immagino che molto probabilmente avrò bisogno di valori dal profilo (ad esempio nome, posizione) quando guarderò questi altri modelli.

Non c'è dubbio che funzionerà, quindi forse non importa, ma mi chiedevo solo quali fossero i pensieri degli altri.

Grazie!

Ludo.

risposta

1

In generale: Se si desidera rendere riutilizzabili le proprie app, creare sempre chiavi esterne nel modello Utente.

Come già detto, nella maggior parte dei casi è necessario l'utente e l'istanza del profilo, quindi per evitare più query di database, utilizzare la cache.

Se riutilizzabilità non è rilevante, creare la chiave esterna al profilo ed utilizzare select_related() per ottenere l'istanza utente con un'unica query.

2

Si consiglia inoltre di creare chiavi esterne per il modello Utente. Semplifica la vita quando si lavora con l'oggetto utente nella vista, per esempio. Quindi, puoi fare cose come request.user.foo_set, ecc. Senza dover passare attraverso il modello del profilo.

+0

Non l'ho considerato. Avviso sonoro. – sleblanc

Problemi correlati