1

次のように継承することにより、カスタムモデルでユーザーモデルを拡張しようとしています:

class Profile(User):
   ...

カスタム フィールドを User モデルに追加したいのですが、django nonrel がエラーで失敗します。

DatabaseError: Multi-table inheritance is not supported by non-relational DBs.

では、どうすればこの問題を解決できますか?User モデルには必ずカスタム フィールドが必要です。

4

3 に答える 3

2

User モデルをオーバーライドする代わりに、追加のフィールドを保持する別のクラスを作成し、それを 1 対 1 の関係で User モデルにバインドする必要があります。

from django.contrib.auth.models import User

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True)
    nickname = models.CharField(max_length=50)
    ...
    ...
于 2011-04-07T18:35:20.677 に答える
1

google-app-engine ではそのようなことはできません。モデルに関係を持たせたい場合。appengine の方法で同じことが達成できるように、モデルを非正規化する必要があります。以下のリンクからアクセスできます。

appengine でのモデリング

appengine での日々のプロファイル モデリング

于 2011-04-07T11:30:26.080 に答える
1

request.user オブジェクトを通常の User オブジェクトにしたかったのですが、フィールドを追加しました。UserProfile にはユーザーではなくメンバー「ユーザー」があるため、受け入れられた回答ではそれが許可されません。

この記事では、代わりに User から継承する方法について説明します。

簡単な手順:

  • CustomUser を User から継承させる
  • CustomUser を返すようにカスタム認証バックエンドを設定する

まだ試していません。

于 2011-09-18T00:48:07.973 に答える