2010-05-13 39 views
5

Estoy tratando de ampliar el formulario de registro de usuario básico y el perfil incluido en la tienda de satchmo, pero tengo problemas con eso.extendiendo el perfil de usuario de satchmo

Esto lo que he hecho:

Crear una nueva aplicación "extendedprofile"

Escribió un models.py que amplía la clase satchmo_store.contact.models y añadir los campos de nombre personalizado.

escribí un admin.py que anula el registro de la clase de contacto y registra mi nueva aplicación, pero esto me muestra el formulario de perfil de usuario predeterminado.

Tal vez alguien me puede mostrar la forma correcta de hacer esto?

Respuesta

3

Parece que lo está haciendo bien, pero sería útil si publica su fuente. Cuando tomo esta ruta, trato perfil extendido como una línea para el modelo de usuario:

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) 

suerte que le ayuda.

1

Escribió un models.py que amplía la clase satchmo_store.contact.models y añadir los campos de nombre personalizado.

escribió un admin.py que anular el registro de la clase de contacto y registrar mi newapp pero esto todavía me muestra la forma del perfil de usuario por defecto .

Esto está relacionado con la anulación de la clase de usuario de registro django; el proyecto satchmo crea una clave externa para la clase User (a partir de 0.9.2). Pero lo que quiere hacer es crear una clase de perfil extendida con nuevos campos.

Por lo tanto, en este caso específico que va a tener que hacer algunas cosas para anular la plantilla de perfil que muestra la información de contacto:

  1. Escribir sus propios modelos que subclase de la clase de contacto (ya hizo esto)
  2. Escribe tu propia vista (s) a usar su nueva clase de modelo (base en satchmo_store.contact.views pero el uso de su propia clase en lugar de la clase de contacto)
  3. anular el urlpatterns para la aplicación satchmo_store.contact a señalar en su nueva vista
  4. Extienda la clase de formulario satchmo_store.contact.forms.ExtendedContactInfoForm con entradas para sus campos de formulario editables.
  5. Modifique la plantilla contact/view_profile.html para incluir los campos de nombre personalizado.

A continuación, puede cancelar el registro de la clase de contacto como se indica anteriormente, admin.site.unregister(Contact), y solo administrar su nueva subclase.

Cuestiones relacionadas