【发布时间】:2016-09-15 04:46:39
【问题描述】:
我正在寻找正确的方法来覆盖子类的 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() 方法的正确方法?
当然我可以自定义Base类的create方法,但是我想要的是在创建A时同时调用Base.create和A.create,这使得情况与this question不同/p>
【问题讨论】:
-
是的,您可以使用答案中解释的简单类方法
-
@SardorbekImomaliev 我认为非常相似。但是在我的情况下,我需要同时调用基本模型的方法。
-
我不明白。那为什么不打电话给
super(A, self).create()呢?或者你想用 A.create() 同时创建 Base 和 A 对象? -
SardorbekImomaliev 感谢您的回答。我想将逻辑分成两部分,Base.create() 和 A.create()。如何在创建 A 类实例时调用两者?