【问题标题】:how to get parent object from child object in django如何从django中的子对象获取父对象
【发布时间】:2021-01-25 15:03:43
【问题描述】:

我有两个模型(类),一个继承自另一个。 GRESubjectCertificate 作为父级

class GRESubjectCertificate(LanguageCertificate):
    quantitative = models.PositiveSmallIntegerField()

    verbal = models.PositiveSmallIntegerField()

    analytical_writing = models.DecimalField(
        max_digits=2, decimal_places=1,
    )

    total = models.PositiveSmallIntegerField()

和 GREBiologyCertitificate 作为孩子:

class GREBiologyCertificate(GRESubjectCertificate):
    cellular_and_molecular = models.PositiveSmallIntegerField()

    organismal = models.PositiveSmallIntegerField()

    ecology_and_evolution = models.PositiveSmallIntegerField()

我想通过较低的父类名称将 GREBiologyCertificate 中的对象转换为 GRESubjectCertificate,但它不起作用。我在此解决方案之前使用过将子对象转换为父对象,但现在失败了。

instance1 = GREBiologyCertificate()

instance2 = instance1.gresubjectcertificate

“GREBiologyCertificate”对象没有“gresubjectcertificate”属性

编辑1: 下面的例子没有问题。

class A():
    number = models.PositiveSmallIntegerField()
class B(A):
    factor = models.PositiveSmallIntegerField()

instance1 = B()
instance2 = instance1.a

instance2 将是 A 类的一个实例。

【问题讨论】:

    标签: python django inheritance casting python-3.8


    【解决方案1】:

    子对象继承自父类,但是“将子对象转换为父对象”是什么意思?如果你只是想访问父类的属性,你可以像往常一样做,因为 GREBiologyCertificate 继承自 GRESubjectCertificate。例如,如果您想从 GRESubjectCertificate 访问“total”属性,您可以:

    instance1.total
    

    这有帮助吗?如果您只想创建父类的实例,您是否有不想做的原因:

    instance2 = GRESubjectCertificate()
    

    【讨论】:

    • 否。我想将子实例转换为父实例。在 python 中,可以将它作为子实例的属性来获取。可能是我用不好的方式和坏话问我。
    • 对不起,我不明白。为什么你不想只使用instance2 = GRESubjectCertificate()?我不相信可以从子类对象实例化父类对象。
    猜你喜欢
    • 2022-12-15
    • 2023-03-14
    • 2022-01-04
    • 2020-04-14
    • 2021-07-21
    • 2011-01-02
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    相关资源
    最近更新 更多