我想为我的模型子类创建一些实例变量,但是当将对象保存到数据库时,我不希望该变量的表列。我在某些地方读到你会通过覆盖 init ()来完成它,就像你在其他类中创建普通实例变量一样。这是模型子类的可接受方式吗?还有其他方法吗?
models.py:
class MyModel (models.Model):
name = models.CharField(max_length=300)
def __init__(self, *args, **kwargs):
super(MyModel, self).__init__(*args, **kwargs)
self.tempvar = ''
views.py:
myModel = MyModel()
myModel.tempvar = 'this will not be saved in the database'
答案 0 :(得分:4)
这是一种可以接受的方式,虽然您不需要对其进行初始化,除非您有可能在它不存在时尝试访问它。另外,请考虑您是否应该使用属性。
答案 1 :(得分:1)
只需声明另一个变量而无需映射到模型属性:
class MyModel (models.Model):
name = models.CharField(max_length=300)
tempvar = ''