5

我正在尝试扩展 satchmo 商店中包含的基本用户注册表单和个人资料,但我遇到了问题。

这就是我所做的:

创建一个新的应用程序“扩展配置文件”

编写了扩展 satchmo_store.contact.models 类的 models.py 并添加了自定义名称字段。

写了一个 admin.py 取消注册 Contact 类并注册我的 newapp 但这仍然向我显示默认的用户配置文件表单。

也许有人可以告诉我正确的方法来做到这一点?

4

2 回答 2

3

听起来您做得对,但是如果您发布源代码会有所帮助。当我采用这条路线时,我将扩展配置文件视为用户模型的内联:

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)

希望对您有所帮助。

于 2010-05-14T01:59:04.707 回答
1

编写了扩展 satchmo_store.contact.models 类的 models.py 并添加了自定义名称字段。

写了一个 admin.py 取消注册 Contact 类并注册我的 newapp 但这仍然向我显示默认的用户配置文件表单。

这与覆盖django注册User类有关;satchmo 项目为 User 类创建了一个外键(从 0.9.2 开始)。但是您要做的是创建一个带有新字段的扩展配置文件类。

因此,在这种特定情况下,您需要做一些事情来覆盖显示联系人信息的配置文件模板:

  1. 编写您自己的模型来继承 Contact 类(您已经这样做了)
  2. 编写您自己的视图以使用您的新模型类(基于satchmo_store.contact.views但使用您自己的类而不是 Contact 类)
  3. 覆盖 satchmo_store.contact 应用程序的 urlpatterns 以指向您的新视图
  4. 使用可编辑表单字段的条目扩展satchmo_store.contact.forms.ExtendedContactInfoForm表单类。
  5. 修改contact/view_profile.html模板以包含自定义名称字段。

然后你可能想像上面那样取消注册 Contact 类admin.site.unregister(Contact),并且只管理你的新子类。

于 2010-11-06T01:51:56.740 回答