1
class Dad(models.Model): 
    name = models.CharField() 

    def __str__(self): 
     return self.name 

class Son(Dad): 
    dad = models.ForeignKey(Dad, related_name='sons') 



>>> dad = Dad(name="Leonid") 
>>> dad.save() 
>>> Dad.objects.all() 
[<Dad: Leonid>] 
>>> son = Son(name='Jason') 
>>> dad.sons.add(son) 
>>> Dad.objects.all() 
[<Dad: Leonid>, <Dad: Jason>] 
>>> Son.objects.all() 
[<Son: Jason>] 

私はDadのマネージャーにJasonオブジェクトを持ちたくありません。私は、父親だけをフィルタリングするためにカスタムマネージャを使いたくない。子クラスのオブジェクトを含まないエレガントな方法がありますか?DjangoスーパークラスのマネージャーはForeignKey経由で子クラスの不要なオブジェクトを持っています

答えて

0

Dadを延長してSonモデルを作成していますが、これはあなたのケースでは間違っています。現在、あなたのコードは、SonDadであることを意味します。あなたがmodel inheritance、あなたが混乱するように見える異なる概念ですforeign key relationsの詳細を読むことができ

class Son(models.Model): 

:に自分のクラス定義を変更します。

関連する問題