2017-04-06 3 views
-1

Djangoには、ContentTypeモデルがあります。 私はCのオブジェクトを有するC1を指すのオブジェクトが存在する場合CONTENT_TYPE AとC1は、Iがc1.a又はc1.a.field1にアクセスすることができると言う場合、私はモデルA、BおよびCcontenttypeへの外部キーは十分ではありませんか?

class A(models.Model): 
    field1 = models.BooleanField(default=True) 
    c = models.OneToOneField(myapp.C) 

class B(models.Model): 
    field2 = models.CharField() 

class C(models.Model): 
    limits = models.Q(app_label=u'students', model=u'a') | \ 
      models.Q(app_label=u'myapp', model=u'b') 
    content_type = models.ForeignKey(ContentType, limit_choices_to=limits) 

を有することを検討してください。
aからc1にアクセスできるのであれば、なぜ私はGenericForeignKeyが必要ですか?

また、c2がcontent_typeがBであるCのオブジェクトである場合、c2.b.field2を呼び出すとどうなりますか?

+1

'Ato'から' C'までの 'OneToOneField'と' C'の 'GenericForeignKey'から選択する必要があります。両方が冗長であること。 – knbk

答えて

0

knbkによってコメントされているように、AからCまでのOneToOneFieldとCのGenericForeignKeyから選択する必要があります。リバースクエリを可能にするために、モデルAとモデルBで一般的な関係を使用できます。

関連する問題