修改继承字段的属性
我想修改一个从基类继承来的模型字段的属性。但是我下面的做法似乎没有任何效果。有没有什么好的建议?
def __init__(self, *args, **kwargs):
super(SomeModel, self).__init__(*args, **kwargs)
f = self._meta.get_field('some_field')
f.blank = True
f.help_text = 'This is optional'
2 个回答
0
好的,这个事情根本不可能,原因如下:
http://docs.djangoproject.com/en/1.1/topics/db/models/#field-name-hiding-is-not-permitted
补充:顺便说一下:不要试图在构造函数里面改变类的属性,这样做并不明智。你现在想做的事情,实际上是在创建一行数据的时候去改变表的结构。如果你在用SQL的时候,你不会这么做,对吧?这完全是两回事。改变表单的方式就不一样了——我经常动态地改变一个表单的实例,但我只是在改变这个特定的实例,而不是整个表单的模板(类)。比如说,我可能会动态添加一个字段,这个字段在这个特定的表单实例中是必需的。
3
所以呢,你需要修改空白和帮助文本的属性。我猜你想要这个功能是为了让帮助文本在表单中显示出来,并且表单不会提示“这个字段是必填的”。
那么在表单中这样做:
class MyForm(ModelForm):
class Meta:
model = YourModel
some_field = forms.CharField(required=False, help_text="Whatever you want")