は、次のモデルを考える:継承された/子オブジェクトのrelated_nameをオーバーライドするにはどうすればよいですか?
class Module(models.Model):
pass
class Content(models.Model):
module = models.ForeignKey(Module, related_name='contents')
class Blog(Module):
pass
class Post(Content):
pass
私のような何かをしてブログが所有するすべての「ポスト」オブジェクトを取得できるようにしたいと思います:
b = Blog.objects.get(pk=1)
b.posts.all()
しかし、私は考え出したていませんこれを行う良い方法です。 b.contents.all()
をPost
インスタンスとし、Content
インスタンスでは使用できません。私はこれまでルートコンテンツオブジェクトを持っていません。すべてのコンテンツオブジェクトはサブクラス化されますが、抽象クラスは使用できません。すべてのコンテンツを含む中央テーブルを必要とし、すべてのコンテンツテーブルコンテンツのユニークな継承された部分。
また、私はこの
class Content(models.Model):
module = models.ForeignKey(Module, related_name='%(class)')
をやってみましたが、それは私の知る限り言うことができるよう無残に失敗しました。
私は本当に回避策を見たいと思っています。しかし、これは最も有望な、単純な答えのように見えます。この問題は、Blog(またはそのハードコーディングされたもの)でのみ機能します。投稿はブログとフォーラムの両方に属している可能性があります。 – Adam
related_nameのようにクエリを実行しても機能しません。 – benselme