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>] 

Я не хочу иметь объект Джейсона в менеджере папы. Я не хочу использовать настраиваемых менеджеров для фильтрации только отцов. Есть ли элегантный способ не включать объекты дочернего класса.Менеджер суперкласса Django имеет нежелательные объекты детского класса через ForeignKey

ответ

0

Вы создаете модель Son, что неверно для вашего случая. В настоящее время ваш код означает, что каждый Son также является Dad. Измените определение класса на:

class Son(models.Model): 

Вы можете прочитать больше о model inheritance и foreign key relations, которые являются различные концепции, которые вы, кажется, сбивает с толку.

Смежные вопросы