添加一些字段以返回父级的值

时间:2018-02-25 10:05:42

标签: python django python-3.x inheritance django-models

我的Django模型中有一个抽象类,它有一些孩子。我的父模型中有一个方法如下:

def get_info(self):
    return {
        'name': self.name,
        'username': self.username,
        'about': self.about,
    }

我想在我的子类中添加一些额外的字段到这本字典中。如何获取父输出添加一些字段并返回结果。(在子方法中具有相同的名称get_info

3 个答案:

答案 0 :(得分:1)

您应该使用super().get_info来访问父类的方法,它将根据方法解析顺序(MRO)找到父类。
如果您有多个父级,请指定要从该方法调用哪个父级。 super(SpecifyParent, self).get_info

答案 1 :(得分:1)

您可以继承子类中的函数,调用超类函数,然后更新父类返回的字典

class A:
    def get_info(self):
        return {
            'name': self.name,
            'username': self.username,
            'about': self.about

        }

class B(A):
    def get_info(self):
        data = super(B, self).get_info()
        data.update({
            'b_attribute': self.something
        })
        return data

答案 2 :(得分:-2)

def get_info(self):
    return self.name, self.username, self.about

def get_info(self):
    return {
        'name': self.name,
        'username': self.username,
        'about': self.about
   }

没有最终的逗号