リストを繰り返し処理してその要素を更新すると、リスト自体は更新されません。iterationでフォームセットのフォームを変更する方法
list_var = ['a','b','c']
for l in list_var:
l = 'x'
print list_var
それは
コード以下はXさんは、私のプロジェクトのいずれかに属し、[ 'A'、 'B'、 'C']ない出力します。
if hasattr(self.model, 'get_disabled_always_fields'):
for field in self.model.get_disabled_always_fields():
for form in self.formset_instance:
try:
form.fields[field].widget.attrs['readonly'] = True
except KeyError as e:
pass
リスト要素を更新し、それが反復処理していたリストに影響します。
なぜ、formsetフォームがforループ修飾の影響を受けるのですか?
'a [b] = c'を実行すると、元々は' a .__ setitem __(b、c) 'であるため、実際には元のリスト自体を変更しています。 – HyperNeutrino
しかし、私はform.fields [field]。 attrs ['readonly'] = True、self.formset_instance [1] .fields [field] .widget.attrs ['readonly'] = True – durdenk