0

私のプロジェクトでは、User モデルを Staff クラスに拡張し、Group モデルを PermGroup クラスに拡張しようとしています。ただし、PermGroup をスタッフのグループ フィールド (ユーザーから継承) に保存すると、PermGroup オブジェクトがグループとして保存されるだけで、PermGroup クラスで定義したすべてのフィールドとメソッドが削除されます。そこで、グループ フィールドを上書きするのが最善の方法であると判断しました。私が見つけた以前のstackoverflowの質問とDjangoのドキュメントから、これはうまくいくはずです。

class Staff(User):
    User.groups = models.ManyToManyField('PermGroup', blank=True)

クラスはファイルの後半に表示され、PermGroup には Staff クラスに依存するフィールドがあるため、「PermGroup」を使用する必要があります。順序を入れ替えると、PermGroup クラスでのみ同じ問題が発生します。

今私が抱えている問題は、グループが、他のすべての「manytomany」フィールドが ManyRelatedManagers である ManyToManyField オブジェクトになっていることです。グループを ManyRelatedManager にしたいのですが、方法がわかりません。

「PermGroup」モデル呼び出しを使用して初期化すると、グループを ManyRelatedManager にすることはできますか?

私のアプローチが間違っていて、PermGroups を Staff クラスに保存する代わりの方法を提案できる場合。大変ありがたく存じます。

4

1 に答える 1

0

スタッフを、対応するユーザーへの ForeignKey (より正確には OneToOneField) を持つ標準モデルにしないのはなぜですか?

そして、循環依存の問題を取り除くには、一方を他方に依存させるだけで済みます。たとえば、PermGroup モデルは、そのグループ内の Staff メンバーの ManytoMany のフィールドを持つことができます。スタッフが PermGroup を持つ必要はありません。メンバーが属しているグループを確認したい場合は、次のようにするだけです。

groups_theyre_in = PermGroups.objects.filter(staff_members__id=id_were_looking_for)
于 2011-05-03T22:42:16.227 に答える