我正在寻找正确的方法来覆盖子类的create()
方法。
基本上我这样做:
class Base(models.Model):
field1_base = models.IntegerField()
def __init__(self, field1_base):
# LOGICS
self.field1_base = field1_base
class A(Base):
field2_sub = models.IntegerField()
def __init__(self, field2_sub, field1_base):
# LOGICS
self.field2_sub = field2_sub
super(A, self).__init__(field1_base)
A(field2_sub=1, field1_base=2)
但是我们无法覆盖模型的__init__()
方法。
我只想在基类的方法中保留一些字段。
是否有使用create()
方法执行此操作的正确方法?
当然我可以自定义create
Base类的方法,但是我想要的是在创建A的同时调用Base.create和A.create,这使得情况与{{ 3}}
答案 0 :(得分:1)
我会做这样的事情。
class Base(models.Model):
field1_base = models.IntegerField()
def initialize(self, *args, **kwargs):
self.field1_base = kwargs['field1_base']
@classmethod
def create(cls, *args, **kwargs):
# LOGICS
self = cls()
self.initialize(*args, **kwargs)
return self
class A(Base):
field2_sub = models.IntegerField()
def initialize(self, *args, **kwargs):
super(A, self).initialize(*args, **kwargs)
self.field2_sub = kwargs['field1_base']
A.create(field2_sub=1, field1_base=2)