从动态 ModelForm 中删除字段

2023-11-25

在 ModelForm 中,我必须测试用户权限以让他们填写正确的字段:

它的定义如下:

class TitleForm(ModelForm):    
    def __init__(self, user, *args, **kwargs):
        super(TitleForm,self).__init__(*args, **kwargs)            
        choices = ['','----------------']
        # company
        if user.has_perm("myapp.perm_company"): 
            self.fields['company'] = forms.ModelChoiceField(widget=forms.HiddenInput(),
                queryset=Company.objects.all(), required=False) 
            choices.append(1,'Company')
        # association
        if user.has_perm("myapp.perm_association")
            self.fields['association'] =
            forms.ModelChoiceField(widget=forms.HiddenInput(),
                queryset=Association.objects.all(), required=False)
            choices.append(2,'Association')
        # choices
        self.fields['type_resource'] = forms.ChoiceField(choices = choices)

    class Meta:
        Model = Title  

这个 ModelForm 完成了工作:我隐藏了模板上的每个字段,并通过 javascript 让它们出现...
问题是这个ModelForm是模型中定义的每个字段都会显示在模板上。
如果不需要,我想将它们从表单中删除:
示例:如果用户对模型公司没有权限,则不会在模板的渲染表单中使用它。

问题是您必须将字段列表放入表单的 Meta 类中fields or exclude属性,但我不知道如何动态管理它们。

任何想法??
预先感谢您的任何答复。


只需将其从自我领域 dict:

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

从动态 ModelForm 中删除字段 的相关文章

  • 运行时动态转换

    有没有一种方法可以在运行时动态转换 如以下伪代码 foreach DataRow row in table Rows foreach DataColumn col in table Columns if row col DBNull Val
  • 服务器端 Google 标记聚类 - Python/Django

    在尝试使用客户端方法来聚类大量 Google 标记后 我认为这对于我的项目 拥有 28 000 多名用户的社交网络 来说是不可能的 是否有在服务器端对坐标进行聚类的示例 最好是在 Python Django 中 我希望它的工作方式是根据标记
  • Django 全文搜索优化 - Postgres

    我正在尝试利用 Django v2 1 和 Postgres 9 5 创建一个地址自动完成功能的全文搜索 但性能目前不适合自动完成 我不明白逻辑我得到的绩效结果背后 就信息而言 该表相当大 有 1400 万行 我的型号 from djang
  • 如何将自定义 CSS 添加到脆皮表单?

    我正在尝试在脆皮表单的帮助下为我的网站创建一个响应式表单 我没有使用引导程序 我想将自定义 CSS 添加到脆皮表单以匹配我的整个网站 HTML
  • 在 OrderedDict 中如何按特定属性排序? [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我正在尝试通过执行以下操作对以下 OrderedDict 进行排序 gt gt gt gt from collectio
  • 如何从序列化器字段订购 Django Rest Framework 查询集?

    我如何订购 DjangoQuerySet来自序列化器字段 由于字段太复杂 我无法订购QuerySet using annotate我也无法将值存储在模型中 Edit 串行器 class DrinkListModelSerializer se
  • 在 Django 中为多个查询编写视图的最佳方法?

    这是一个简单的问题 我已经组织了我的模型 以便提供给页面的大多数对象都属于一种类型 项目 该模型包含各种属性 可以帮助我以不同的方式提供服务 我有文章和视频 它们由模型上的 类型 字段确定 类型 文章 等 我有一个列表视图 它显示项目模型中
  • Django 表单验证消息未显示

    我试图限制可以以表单上传的文件类型 大小和扩展名 该功能似乎有效 但未显示验证错误消息 我意识到if file size gt 4 1024 1024可能不是最好的方法 但我稍后会处理这个问题 这是 forms py class Produ
  • 嵌套重组 - Django

    我有一个包含以下字段的模型 日期 员工 和 计划时间 每个员工对于不同的日期都有不同的计划工作时间 我正在尝试构建我的模板 其中员工按行列出 他们的计划工作时间列在正确的相应日期下的列中 像这样的东西 https i stack imgur
  • 从 django 返回带有 BOM 的 UTF-8 编码的 csv

    我正在尝试输出一个用户可以用 Excel 打开的 CSV 文件 我已经用 UTF 8 编码了所有字符串 但是当我用 Excel 打开文件时 我看到了乱码 只有在将文件转换为带 BOM 的 UTF 8 在 Windows 上使用 notepa
  • 在 Django 中上传文件

    我在 Django 1 6 版本 中上传文件时遇到问题 当我尝试做的时候new file data save 在我的views py 中我收到此错误 quiz patent 22 medical record 2 exams 处的属性错误
  • Django:通过外键将两个表连接到第三个表?

    我有三个型号 class A Model class B Model id IntegerField a ForeignKey A class C Model id IntegerField a ForeignKey A 我想要得到 B i
  • Django ConnectionAbortedError:[WinError 10053]已建立的连接被主机中的软件中止

    我将 django 与 postgresql 一起使用 每当我尝试保存或删除任何内容时 都会发生此错误 Traceback most recent call last File c program files x86 python35 32
  • Django,无法分配 None,不允许空值

    我有这个模型 py import datetime from django db import models from tinymce import models as tinymce models from filebrowser fie
  • python 2.7+ 中的组引用无效

    我正在尝试将我的网页 在 django 中创建 中的所有 WikiLink 类型的字符串转换为 html 链接 我正在使用以下表达式 import re expr r s A Z a z A Z a z s repl r a href 1
  • 在 C# winforms 的控件内水平和垂直对齐动态添加的控件

    我有这个程序 可以动态添加引用数据库中总统号码的图片框 如何将它们放入组框内并对齐组框内的图片框 如果图片框很多 则组框应该拉伸 我现在有这个代码 private void Form1 Load object sender EventArg
  • 如何在 Django 管理中以表格格式显示添加模型?

    我刚刚开始使用 Django 编写我的第一个应用程序 为我的家庭设计的家务图表管理器 在本教程中 它向您展示了如何添加相关对象 http docs djangoproject com en dev intro tutorial02 cust
  • 当 DetailView 遇到时更新模型字段。 [姜戈]

    我有一个类似的 DetailViewviews py views py class CustomView DetailView context object name content model models AppModel templa
  • django_debug_toolbar 和 Docker

    因此 我让 docker 和 Django 在本地工作 首先从 Dockerfile 构建一个映像 然后使用 Fig 获取 postgres 映像 将其链接到基础映像 然后运行本地服务器 除了 django debug toolbar 之外
  • django模板中获取用户信息

    从 django 模板获取用户信息的最佳方法是什么 例如 如果我只想 如果用户已登录 则显示 欢迎 用户名 否则 显示登录按钮 我正在使用 django 注册 身份验证 当前 Django 版本的替代方法 if user is authen

随机推荐