如何在 django 模型表单中添加自定义字段?

2023-12-30

我正在尝试在表单中添加只读字段。

该模型Folder已在管理站点中注册。这FolderAdminForm定义自定义字段statistics。没有statistcs领域中的Folder模型,我只想在表单上放置一些只读数据。该数据在模板中定义。

但只要用户没有编辑权限,我就会收到错误消息。如果用户只有查看权限,则会出现此错误:

AttributeError: Unable to lookup 'statistics' on Folder or FolderAdmin

这是我的代码:

class CustomWidget(forms.Textarea):
    template_name = 'widget.html'


class FolderAdminForm(forms.ModelForm):
    class Meta:
        model = Folder
        fields = ('field1', 'field2', 'field3',)

    statistics = forms.Field(
        widget=CustomWidget,
        label='Estatísticas',
        help_text='Estatísticas da pasta',
    )

根据最后一部分这个答案 https://stackoverflow.com/a/4893172/9225671,你可以尝试覆盖表单__init__()方法并分配字段initial属性。

这可能看起来像:

def __init__(self, *args, **kwargs):
        # only change attributes if an instance is passed            
        instance = kwargs.get('instance')
        if instance:
            self.base_fields['statistics'].initial = 'something'
        super().__init__(*args, **kwargs)

这对你有用吗?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 django 模型表单中添加自定义字段? 的相关文章

随机推荐