我有一个带有大量描述性TextFields的“Villa”模型。对于每个TextField,我有一个副本,它将是原始字段的俄语翻译,我通过附加“_ru”来命名,例如“long_description”和“long_description_ru”。我想从我的ModelForm中排除所有“_ru”字段,我认为我可以这样做:
class VillaForm(ModelForm):
class Meta:
model = Villa
exclude = []
for field_name in Villa.__dict__:
print field_name
if field_name.endswith("_ru"):
exclude.append(field_name)
但是,Villa.__dict__
不包含TextFields - 即使它们由ModelForm呈现。我在这里非常愚蠢吗?
答案 0 :(得分:2)
我看到你问这个问题已经有一段时间了,但我有一个答案。我认为在__init__
函数中可能更容易做到:
class VillaForm(ModelForm):
class Meta:
model = Villa
def __init__(self, *args, **kwargs):
super(VillaForm, self).__init__(*args, **kwargs)
for field_name in self.fields.keys():
if field_name.endswith("_ru"):
del self.fields[field_name]
代码未经过完全测试,但我确实认为在__init__
与Meta定义中比较容易。