расширение профиля пользователя satchmo - PullRequest
5 голосов
/ 14 мая 2010

Я пытаюсь расширить базовую форму регистрации пользователя и профиль, включенные в магазин satchmo, но у меня проблемы с этим.

Вот что я сделал:

Создание нового приложения "extendedprofile"

Написал файл models.py, который расширяет класс satchmo_store.contact.models и добавляет поля пользовательских имен.

написал admin.py, который отменил регистрацию класса Contact и зарегистрировал мое новое приложение, но это все еще показывает мне форму профиля пользователя по умолчанию.

Может, кто-нибудь покажет мне правильный способ сделать это?

Ответы [ 2 ]

3 голосов
/ 14 мая 2010

Звучит так, будто вы все делаете правильно, но это поможет, если вы опубликуете свой источник. Когда я выбираю этот маршрут, я рассматриваю расширенный профиль как встроенный в модель пользователя:

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)

Надеюсь, это поможет вам.

1 голос
/ 06 ноября 2010

Написал models.py, который расширяет класс satchmo_store.contact.models и добавить пользовательские поля имени.

написал admin.py, который отменяет регистрацию Связаться с классом и зарегистрировать мое новое приложение но это все еще показывает мне по умолчанию Форма профиля пользователя.

Это связано с переопределением класса User регистрации django; проект satchmo создает внешний ключ для класса User (по состоянию на 0.9.2). Но вы хотите создать расширенный класс профиля с новыми полями.

Итак, в этом конкретном случае вам нужно будет сделать несколько вещей, чтобы переопределить шаблон профиля, который отображает контактную информацию:

  1. Напишите свои собственные модели, которые подклассируют класс Contact (вы уже сделали это)
  2. Напишите свои собственные представления для использования вашего нового класса модели (на основе satchmo_store.contact.views, но используйте свой собственный класс вместо класса Contact)
  3. Переопределите urlpatterns для приложения satchmo_store.contact, чтобы указать на ваш новый вид
  4. Расширьте класс формы satchmo_store.contact.forms.ExtendedContactInfoForm с записями для ваших редактируемых полей формы.
  5. Измените шаблон contact/view_profile.html, добавив в него поля пользовательских имен.

Тогда вы можете отменить регистрацию класса Contact, как указано выше, admin.site.unregister(Contact), и только администрацию вашего нового подкласса.

...