2010-05-13 16 views
5

Sto provando ad estendere il modulo di registrazione utente di base e il profilo incluso nel satchmo store, ma ho problemi con questo.estensione profilo utente satchmo

Questo quello che ho fatto:

Creare una nuova applicazione "extendedprofile"

Ha scritto un models.py che estende la classe satchmo_store.contact.models e aggiungere i campi nome personalizzato.

ha scritto un admin.py che annulla la registrazione della classe Contact e registra la mia newapp ma questo mi mostra ancora il modulo profilo utente predefinito.

Forse qualcuno può indicarmi il modo corretto di farlo?

risposta

3

Sembra che tu stia facendo bene, ma sarebbe utile se pubblichi la tua fonte. Quando prendo questa strada, tratto profilo esteso come inline per il modello utente:

class UserProfileInline(admin.StackedInline): 
    model = UserProfile 
    fk_name = 'user' 
    max_num = 1 
    fieldsets = [ 
     ('User Information', {'fields': ['street', 'street2', 'city', 'state', 'country', 'latitude', 'longitude']}), 
     ('Site Information', {'fields': ['sites']}), 
     ('User Account', {'fields': ['account_balance']}), 
    ] 

class NewUserAdmin(admin.ModelAdmin): 
    inlines = [UserProfileInline, ] 

admin.site.unregister(User) 
admin.site.register(User, NewUserAdmin) 

Speriamo che si può dire.

1

Ha scritto un models.py che estende la classe satchmo_store.contact.models e aggiungere i campi nome personalizzato.

scritto un admin.py che annullare la registrazione della classe Contatti e registrare il mio newapp ma questo ancora mi mostra il modulo di profilo utente predefinito .

Questo è correlato all'override della classe utente di registrazione django; il progetto satchmo crea una chiave esterna per la classe User (a partire da 0.9.2). Ma quello che vuoi fare è creare una classe profilo estesa con nuovi campi.

Quindi, in questo caso specifico si sta andando ad avere bisogno di fare un paio di cose per ignorare il modello di profilo che mostra le informazioni di contatto:

  1. Scrivi i tuoi modelli che sottoclasse classe Contact (che già fatto questo)
  2. Scrivi la tua view (s) per utilizzare il nuovo modello di classe (base su satchmo_store.contact.views ma utilizzare la propria classe al posto della classe Contact)
  3. sovrascrivere l'urlpatterns per l'applicazione satchmo_store.contact da indicare a vostra nuova vista
  4. Estendi la classe di modulo satchmo_store.contact.forms.ExtendedContactInfoForm con le voci per i campi del modulo modificabile.
  5. Modificare il modello contact/view_profile.html per includere i campi del nome personalizzato.

Quindi è possibile annullare la registrazione della classe Contact come sopra, admin.site.unregister(Contact) e solo admini la nuova sottoclasse.

Problemi correlati