4

Djangoプロジェクトを開始しました(アプリはありません)。admin設定ファイルを有効にして、Django管理ページにアクセスできます。Djangoページには、ユーザーを追加するための列があります。ユーザーを追加している間、個人情報の下に3つのフィールドしか表示されませんが、ユーザーに関するいくつかの情報を保存する必要があります。Googleで調べてみたところ、ユーザープロファイルを使用してこれを実現できることがわかりました。試しましたが、問題が発生しています。

私の目的は、ユーザーテーブルにさらに3つのフィールドを追加することです。

  1. 役割
  2. 連絡先番号
  3. 他の

次のような詳細が必要です。どの関数を作成する必要があり、どこでこれを行うか。

私はこれを見つけましが、これらのステップをどこに書く必要があるのか​​わかりません。これについてもっと明確に説明していただければ幸いです。

4

2 に答える 2

4

Django User Profiles が必要です。リンク先のブログには、その方法に関する明確な手順があります。Django のドキュメントを確認できます。http://www.turnkeylinux.org/blog/django-profileにも適切な説明があります。基本的に、 User を ForeignKey として新しいモデルを作成し、settings.pyasでモデルを定義する必要がありますAUTH_PROFILE_MODULE = "django_app.your_profile_modelname"。プロファイルを作成し、他のモデルと同じように保存し、次を使用してアクセスしますuser.get_profile()

以下の質問に答えて、いくつかのことを追加します。まず、アプリをディレクトリとして作成しないでください。こちらの説明に従って使用startapp <appname> [destination]してください。これで app ディレクトリが作成されます。INSTALLED_APPS次に、プロジェクトの設定ファイルにアプリを追加する必要がありsyncdbます。基本的に、最初のアプリの作成に関する Django チュートリアルの手順に従います。第三にUserProfile、別のモデルです。の拡張ではありませんUser。として追加したUserという理由だけで に関連付けられています。第 4 に、admin でユーザー プロファイル モデルを表示できるようにするには、他のモデルを admin ページに追加する場合とまったく同じことを行います。次を使用して、アプリの下にファイル名を作成します。UserForeignKeyadmin.py

from django.contrib import admin
from myproject.app.models import UserProfile
admin.site.register(UserProfile)
于 2012-07-13T14:47:33.497 に答える
1

理解すべき 3 つの重要な概念があります。

  1. Django には組み込みの「プロファイル」システムはありませんauth。これは、実際にはユーザー ログインだけを対象とした制限付きアプリを除きます。あなたは自分でロールすることが期待されています。
  2. プロファイル レコード自体には魔法のようなものは何もありません。それはUser、外部キー (または、より適切には、 docs によると 1 対 1 のフィールド) として受け取る他のレコードと同じです。profilesカスタム django アプリ (従来は と呼ばれていました) とそのアプリのモデル (はモデル名として許可されていないUserProfileため、従来は と呼ばれていました)を作成して作成します。Profile
  3. UserProfileモデルとして際立っている唯一のことは、それを として指定することです。これは、レコードで呼び出されたAUTH_PROFILE_MODULEときにアクセスできることを意味します。それでおしまい。あなたがそのように設定した場合:.get_profile()UserUserProfile

    def UserProfile(models.Model):
        user = models.OneToOneField(User, related_name='profile')
        other fields
    

    次に、一部の人が好むのuser.profileではなく、プロファイルにアクセスすることもできます.user.get_profile()

繰り返しますが、プロファイル モデルについて魔法のようなことは何もありません。これは、他のモデル レコードと同様に単なるモデル レコードです。

ユーザーフォーム内で追加のフィールドを編集できるようにしたい場合、それはより複雑です。最も簡単な方法は、おそらく登録Userを解除してから、カスタムクラスとフォームクラスを使用して再度登録するModelAdminことですが、質問から判断すると、まだそのレベルに達していない可能性があります。

于 2012-07-13T15:17:37.457 に答える