我的情况如下:
class MyModel(models.Model):
field 1 = models.CharField(kwarg1 = value1, kwarg2 = value2, ...)
class MyCustomCharField(forms.CharField):
def __init__(self, mandatarg1, ckwarg1 = cdefault1, ...):
...
...
class MyModelForm(forms.ModelForm):
class Meta:
model = MyModel
fields = ['field1', ...]
field1 = MyCustomCharField(mandatvalue1, ckwarg1 = cvalue1, ...)
问题是:在我的形式中,我失去了kwarg1 = default1, kwarg2 = default2, ...
,例如可以是help_text="blablabla"
and max_length=255
。
有人想像一个正确的方法来保留这个默认参数吗?
我试过了:
field1 = MyModel._meta.get_field('field1').formfield(form_class=MyCustomCharField, ckwarg1 = cvalue1)
它工作得很好,但我不能传递 mandatvalue1 属性,所以我不能做我需要的!
并且
field1 = MyCustomCharField(mandatvalue1, ckwarg1 = cvalue1, ..., **MyModel._meta.get_field('field1').__dict__)
但是在这里我的字典中有太多的键,Django 崩溃了..
最后,我可以这样做:
field1 = MyCustomCharField(mandatvalue1, ckwarg1 = cvalue1, ..., help_text = MyModel._meta.get_field('field1').help_text, ...)
但是我有很多值得复制的价值,而且它几乎不可维护..有什么想法吗?我有点疯狂,所以我真的很想用一种干净的方式来做这件事(如果不是太多的话)