假设我的模型包含字段field1
class MyClass(models.Model):
field1 = models.CharField(max_length=100)
某处我有像
这样的代码my_object = MyClass()
my_object.field1 = 'a'
my_object.another_field = 'b' # (it's not defined in the model class)
another_object = MyClass()
是否有可能another_field set
?
答案 0 :(得分:2)
不,another_field
对您指定给它的实例是唯一的。无论Django如何,这都是python特有的。在python控制台中试试这个:
>>> class MyClass():
>>> field1 = "field 1"
>>> x = MyClass()
>>> x.another_field = "another field!"
>>> x.field1
'field 1'
>>> x.another_field
'another field!'
>>> y = MyClass()
>>> y.field1
'field 1'
>>> y.another_field
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: MyClass instance has no attribute 'another_field'
如果要动态地向类添加新字段,可以通过将其直接添加到类(而不是实例)来实现,如下所示:
>>> MyClass.newer_field = "this is the newest field"
现在,您可以看到更新的字段可用,甚至是现有对象:
>>> x.newer_field
'this is the newest field'
>>> y.newer_field
'this is the newest field'