繁体   English   中英

在Django模型中设置超类属性

[英]Setting super class attributes in Django Models

如果我有django模型,例如:

from django.db import models

class Super(models.Model):
    field_a = models.IntegerField()
    field_b = models.DateTimeField()

另一个扩展它的模型:

class Sub(Super):
    pass

然后,如何在Sub实例的构造中为field_afield_b设置固定值? 举例来说,作为Sub构造函数的一部分,我想将field_a设置为123并将field_bdatetime.now()

对于它的价值,我有Java背景,基本上我要寻找的是python / django等效项:

public class Super
{
    int fieldA;
    long fieldB;

    public Super(int a, long b)
    {
        this.fieldA = a;
        this.fieldB = b;
    }
}

public class Sub extends Super
{
    public Sub()
    {
        super(123, System.currentmillis());
    }
}

不要将Java与Python混合使用-这不是Python的工作方式!

  • 在Python中没有这个 -您应该将它作为第一个参数传递给方法(此参数的标准命名为self
  • 没有像Java中那样的构造函数-代替了__init__方法

您的问题的通用示例是:

    class Sup:
        field = "default one"
        def __init__(self, value=None):
            if value != None:
                self.field = value

    class Sub(Sup):
        def __init__(self, value=None):
            if value != None:
                Sup.__init__(self, value)

    default = Sub()
    print default.field

    modified = Sub("modified one")
    print modified.field

您还可以在继承类中调用super-此处阅读更多

还请注意,您的qestion与Django没有什么共通之处-如果您是我,我会在创建Django项目之前先介绍一些不错的Python教程

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM