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

标签 python django django-forms django-admin

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

模型文件夹已在管理站点中注册。 FolderAdminForm 定义自定义字段statisticsFolder 模型中没有 statistcs 字段,我只想在表单上放置一些只读数据。该数据在模板中定义。

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

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',
    )

最佳答案

根据this answer的最后一部分,您可以尝试重写表单 __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)

这对你有用吗?

关于python - 如何在 django 模型表单中添加自定义字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51970096/

相关文章:

python - 使用python social auth通过访问 token 注册用户

python - Django:为 ModelForm 中的 ForeignKey 添加 "Add new"按钮

python - QWebEngineView中如何指定用户代理

django - 在 Django 中覆盖 QuerySet.delete()

python - Django/Python 应用程序日志记录不起作用

django - django 多个 MultipleChoiceField 旁边的项目符号

python - 如何实现带有嵌套字段的表单?

python - gobject.type_register() 是做什么的?

java - OpenCV 将 Python 代码转换为 Java

python - 获取二维数组中局部最大值的坐标高于某个值