2017-01-14 18 views
0

例状況にありませんrelated_nameアクセスは次のようにDjangoのモデルの継承:親のForeignKeyの、子モデル

# models.py 
class Form(models.Model): 
    name = models.CharField() 

class A(models.Model): 
    form = models.ForeignKey(Form) 

class B(A): 
    name = models.CharField() 

# view.py 
form = Form.objects.get(id=1) 
form.a_set.all() # works 
form.b_set.all() # doesn't work 

私は、親クラスA外部キーを経由してすべての関連Bオブジェクトにアクセスしたいと思いますが、私は」することができますこれを行うように見える。そして、私がA経由でそれらにアクセスする場合、私は一般的な親クラスのクエリセットを取得します。ありがとうございました。

答えて

3

具体的なモデルから継承する場合、ParentChildモデルの2つのテーブルがあります(抽象モデルを継承しているのとは異なります)。 Djangoは暗黙のうちにこのように、parent_ptrという名前ParentモデルにChildからOneToOneFieldを作成します。

B.objects.filter(a_ptr__form=form) 
# B.objects.filter(a_ptr__form_id=1) 

はあなたの希望QuerySetを与えるだろう。

関連する問題