我正在使用modelformset工厂从模型字段生成formset。在这里,我只想将queryset对象设置为只读,将其他(额外形式)设置为非只读字段

我怎样才能做到这一点?

  AuthotFormSet = modelformset_factory(Author, extra=2,)
  formset = AuthorFormSet(queryset=Author.objects.all())

在上方表单集中,我希望将所有queryset对象显示为只读,而将其余表单显示为非只读字段。我怎样才能做到这一点?

如果我用过
      for form in formset.forms:
          form.fields['weight'].widget.attrs['readonly'] = True

这会将所有形式(包括额外的)字段转换为我不想要的只读字段。
而且我正在使用jQuery插件将表单动态添加到表单集中

最佳答案

我建议指定一个用于模型的表单,然后在该表单中可以设置任何您想只读的属性。

#forms.py
class AuthorForm(forms.ModelForm):
    class Meta:
        model = Author

    def __init__(self, *args, **kwargs):
        super(AuthorForm, self).__init__(*args, **kwargs)
        if self.instance.id:
            self.fields['weight'].widget.attrs['readonly'] = True

#views.py
AuthorFormSet = modelformset_factory(Author, extra=2, form=AuthorForm)

关于python - Django Formset中的只读字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11313446/

10-14 04:26