10

我想为我的模型子类创建一些实例变量,但是当将对象保存到数据库时,我不想要该变量的表列。我在某些地方读到,您可以通过覆盖init () 来做到这一点,就像在其他类中创建普通实例变量一样。这是模型子类的公认方式吗?还有其他方法吗?

模型.py:

class MyModel (models.Model):
    name = models.CharField(max_length=300)

    def __init__(self, *args, **kwargs):
        super(MyModel, self).__init__(*args, **kwargs)
        self.tempvar = ''

视图.py:

myModel = MyModel()
myModel.tempvar = 'this will not be saved in the database'
4

2 回答 2

5

这是一种可以接受的方法,尽管您不需要初始化它,除非您有机会在它不存在时尝试访问它。另外,请考虑您是否应该改用属性。

于 2012-05-31T23:47:57.653 回答
0

Python 3 更新:super()无需重复类名即可直接调用

class MyModel (models.Model):
    name = models.CharField(max_length=300)

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.tempvar = ''
于 2022-02-27T05:22:25.467 回答