【问题标题】:Django super class's manager has unwanted objects of child class via ForeignKeyDjango 超类的经理通过 ForeignKey 拥有不需要的子类对象
【发布时间】:2016-07-10 06:02:31
【问题描述】:
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>]

我不想让 Jason 反对爸爸的经理。我不想使用自定义管理器只过滤爸爸。有没有一种优雅的方式不包含子类的对象。

【问题讨论】:

    标签: django inheritance django-models foreign-key-relationship


    【解决方案1】:

    您正在扩展 Dad 以创建您的 Son 模型,这在您的情况下是不正确的。目前您的代码意味着每个Son 也是Dad。将您的类定义更改为:

    class Son(models.Model):
    

    您可以阅读更多关于 model inheritanceforeign key relations 的信息,这些是您似乎混淆的不同概念。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-10
      • 1970-01-01
      • 2016-01-16
      • 1970-01-01
      • 1970-01-01
      • 2013-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多