3

Env: Django 1.5.1 + Django CMS 2.4.1 + Zinnia 最新版 + カスタム アプリ + カスタム Django CMS プラグイン

基本的に、NetTuts+ の Django Ribbit Tutorialのように、デフォルトの Django (1.5.X) ユーザー モデルを拡張できます。

また

パラグラフのDjango Dev docや Django2Scoops の例のような完全にカスタマイズされたモデルに置き換えます: 「ユーザー モデルの取り扱い」

テストするために、Django2Scoops book からの Subclass AbstractUser を決定しました:「Django のユーザー モデル フィールドをそのまま気に入っているが、追加の ..フィールドが必要な場合は、このオプションを選択してください。」

しかし、次のエラーがあります。

notification.noticesetting: 'user' は、スワップ アウトされたモデル 'auth.User' との関係を定義します。settings.AUTH_USER_MODEL を指すようにリレーションを更新します。cmsplugin_zinnia.latestentriesplugin: 'authors' は、スワップ アウトされたモデル 'auth.User' との関係を定義します。settings.AUTH_USER_MODEL を指すようにリレーションを更新します。

cms.pageuser: 'created_by' は、スワップ アウトされたモデル 'auth.User' との関係を定義します。settings.AUTH_USER_MODEL を指すようにリレーションを更新します。cms.pageusergroup: 'created_by' は、スワップ アウトされたモデル 'auth.User' との関係を定義します。settings.AUTH_USER_MODEL を指すようにリレーションを更新します。

何時間もの読書とテストの後、私は見つけました

カスタム User モデル (AbstractUser を拡張) の指定が機能しない

エラー メッセージにあるように、settings.AUTH_USER_MODEL を指すようにリレーションを更新する必要があります。2 番目のエラー ("Model has been swapped out...") は、User モデルを直接参照しているという事実の副作用です。ForieignKey 参照を変更すると、この 3 番目のエラーはなくなります。新しい User モデルへのスムーズな移行を確実にするためにできる限りのことを行いましたが、完全に透明にすることはできません。アプリの作成者は、アプリを 1.5 互換に更新する必要があります。基本的に、Django 1.4 アプリは、User へのハードコーディングされた外部キー参照が含まれている場合、Django 1.5 と 100% 互換ではありません。もっと例を教えてください。

Django /Python: settings.AUTH_USER_MODEL を指すようにリレーションを更新します。

settings_example.py には、AUTH_USER_MODEL = 'users.User' があります。ただし、django.contrib.auth.User と関係のあるアプリ - menu.bookmark - を使用しています - 両方を持つことはできません。AUTH_USER_MODEL を設定することは、組み込みの Django ユーザー モデルを独自のものに置き換えることを意味します。詳細について は、 http://proclastinatingdev.com/django/using-configurable-user-models-in-django-1-5/ を参照してください。

しかし、どうすればこれを解決できるのかわかりません。

私が必要とするもの:

-ユーザーは機関クラスにリンクされています (1 つの機関 -> より多くのユーザー)

-ユーザーまたは機関は、異なる権限を持ち、異なる django cms ページ/プラグインを表示できます。

-ユーザー用のさらにいくつかのフィールド。

サブクラス AbstractUser は正しいポイントですか?

「スワップアウト」エラーを解決するにはどうすればよいですか?

OpenTreeMap コードに似たものを作成する必要があります

このコードは廃止されていませんか?

ありがとう!

4

2 に答える 2

1

https://github.com/divio/django-cms/issues/1798でのさらなる議論の要約を次に示します。

考えられるオプションは次の 4 つです。

  1. カスタム ユーザー モデルに User 以外の名前を付ける必要がある場合は、しばらく待つ必要があります。
  2. カスタム ユーザー モデルを呼び出すことができますが、Userこれを試したところ、関連する m2m フィールドとの衝突に関するエラーが発生しました。上記のリンクには、これを解決するのに役立つ詳細がいくつかあります。
  3. Django 1.5 でも引き続きユーザー プロファイルを使用できます。したがって、非推奨の機能を使用しても問題ない場合は、カスタム ユーザー モデルの代わりにユーザー プロファイルを使用して Django-CMS 2.4 および Django 1.5 を引き続き使用できます。(Django のドキュメントを読み間違えて、Django 1.5 ではユーザー プロファイルがサポートされていないと思いました。)
  4. 多くの場合、ユーザー プロファイルまたはカスタム ユーザー モデルがなくても解決できます。これらは、特にユーザー認証用のデータを追加するために使用するのが最適です。代わりに、 と 1 対 1 の関係を持つ別のモデルをUser使用し、逆の関係を使用してそれにアクセスできます。

私の場合、短期的には 3 位、長期的には 4 位を選択します。

それが役立つことを願っています!

于 2013-05-23T00:28:17.877 に答える