簡體   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