5

satchmoストアに含まれている基本的なユーザー登録フォームとプロファイルを拡張しようとしていますが、問題があります。

これは私がやったことです:

新しいアプリ「extendedprofile」を作成します

satchmo_store.contact.modelsクラスを拡張するmodels.pyを作成し、カスタム名フィールドを追加します。

Contactクラスの登録を解除してnewappを登録するadmin.pyを作成しましたが、これでもデフォルトのユーザープロファイルフォームが表示されます。

たぶん誰かが私にこれを行う正しい方法を教えてくれるでしょうか?

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 を作成しました。

Contact クラスを登録解除して newapp を登録する admin.py を作成しましたが、これでもデフォルトのユーザー プロファイル フォームが表示されます。

これは、django 登録 User クラスのオーバーライドに関連しています。satchmo プロジェクトは User クラスへの外部キーを作成します (0.9.2 以降)。しかし、やりたいことは、新しいフィールドを持つ拡張プロファイル クラスを作成することです。

したがって、この特定のケースでは、連絡先情報を表示するプロファイル テンプレートをオーバーライドするために、いくつかのことを行う必要があります。

  1. Contact クラスをサブクラス化する独自のモデルを作成します (既にこれを行っています)。
  2. 新しいモデル クラスを使用するための独自のビューを記述します ( satchmo_store.contact.viewsContact クラスの代わりに独自のクラスを使用します)。
  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 に答える