0
各グループにの単一のポリシーへのリンクがあるデータベース構造を作成したいと考えています。抽象モデルへのOneToOneField
Aポリシーは、様々な異なるタイプのの1、その各でき: -
- が追加の属性
- を有することができる間違いはdo_this(というメソッドを持つことになります)と呼ばれる1時間の経過do_that()
、より多くのPolicysが作成されるなど、独自の属性を持つ各
これで私の最初の本能はポリシーメソッドのグループとスタブへのバックリンクを持つ抽象クラスであることで行くことにした: -
class Policy(models.Model):
group = models.OneToOneField(Group)
class Meta:
abstract = True
def do_this():
raise NotImplementedError()
def do_that():
raise NotImplementedError()
そして、異なる種類のポリシーは、独自の属性を追加することができますが、彼らがする必要はありインターフェイスを実装します。
class PolicyA(Policy):
new_attribute = models.IntegerField()
def do_this():
# implementation A
def do_that():
# implementation A
しかし、私がそれを行うならば、私はポリシーが抽象的であるため、そのポリシーについてグループに求める方法がありません。
抽象的な設定を削除した場合、django model utilsのようなものを使用すると、実行時に「本当の」タイプのポリシーを取得できますが、それは私には気になりません。
私は一般的な関係について少しは読んだことがありますが、ここに行く "正しい"方法ですか?私はちょうど私が1つの道または他を降りる前に確かめたいと思う。
私はあなたがここで何をしようとしているのか分かりません。 まず、コンテンツとは何ですか?また、なぜPolicyAはそれから派生していますか? 第2に、my_group.policy.do_this()を呼び出すと、必ずポリシーの実際のクラスがPolicyAであっても、これはPolicyAのdo_this()メソッドを呼び出します。 ここで問題を解決したかどうかはわかりません。 – bodger