0

システム概要:

私のシステムでは、クライアントはアプリケーションにサインアップでき、次にクライアントはロールを作成し、定義されたロールでユーザーを作成できます。したがって、1 つのクライアントに多数のユーザーを含めることができます。

ユーザーに関連するクライアントモデルを作成しました。

class Client(models.Model):

    user = models.OneToOneField(User)

    # True if the signed up user is client
    is_client = models.BooleanField(default=True)   

    # Which company the client represents
    company = models.CharField(max_length=200, null=True)

    # Address of the company
    address = models.CharField(max_length=200, null=True)

しかし、それは間違ったアプローチだと思います。特定のクライアントのユーザーをリストしたいとき、それができないからです。また、ユーザー ロールはどこに保存すればよいですか? auth_permissionテーブルを変更する必要がありますか。ありがとう

4

1 に答える 1

0

ForeignKey()の代わりに、ユーザーとクライアントの関係を追加する必要がありますOneToOne。そのためには、django のUserモデルを拡張するか、独自のユーザー プロファイル クラスを作成します。

モデルの属性を拡張および追加するには、ユーザー モデルの拡張Userを参照してください。


Userdjango の組み込みモデルや認証などを使いたい場合、より良い方法は...

  1. OneToOneとの関係を使用して、アプリでユーザー プロファイル モデルを作成しますUser

  2. このユーザー プロファイル モデルでは、ユーザーと他のモデルとの関係に関する特定の情報を追加します。クライアントに多くのユーザーが必要な場合は、このクラスでロールを設定ForeignKey()し、モデルと関連付けることができます。Client

    クラス UserProfile(models.Model): client = models.ForiegnKey('Client') ...

  3. UserProfile新しいユーザーが作成されるたびに、ユーザーのインスタンスを作成します。

  4. 以前、djangoにはuser.get_profile()ユーザーのユーザー プロファイル オブジェクトを取得するメソッドがありましたが、1.5.1 では非推奨になりました。

于 2013-09-30T07:27:21.940 に答える