Django重写模型子类create方法

2024-09-29 21:37:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找正确的方法来重写子类的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方法,但是我想要的是调用基础.创建和A.create同时创建A,这使得情况与this question不同


Tags: 方法selfbaseinitmodelsdefcreate基类
1条回答
网友
1楼 · 发布于 2024-09-29 21:37:54

我会做这样的事。在

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)

相关问题 更多 >

    热门问题