根据请求更改表单字段

2024-03-29

应用程序有一个类别字段,可以在会话中设置,也可以不设置。如果是,我不想看到表单上的字段,只需将其作为隐藏字段,其值等于请求中的值。如果未设置,那么我想显示一个下拉菜单。

我已经设置了表单以包含下拉列表,这是该字段的默认设置,我的问题是,将小部件更改为隐藏的最佳位置在哪里,请记住我需要该请求,因此我无法在表格init,这是明显的地方。

尝试了这种方法,但该字段仍然可见:

class DocForm(forms.ModelForm):


    class Meta:
        model = Document
        fields = __all__
        widgets = {"creator": forms.HiddenInput(),}

    def __init__(self, *args, **kwargs):
        #cant do it here because don't have request

class DocAddView(CreateView):


    form_class = DocForm


    def get_form_class(self):
        form_class = super(DocAddView, self).get_form_class()
        form_class.Meta.widgets['category'] = forms.HiddenInput()
        return form_class

更改您的表格__init__方法来获取请求对象。

class DocForm(forms.ModelForm):
    ...
    def __init__(self, request, *args, **kwargs):
        super(DocForm, self).__init__(*args, **kwargs)
        use_hidden_input = do_something_with_request(request)
        if use_hidden_input:
            self.fields['category'].widget = forms.HiddenInput()

然后覆盖get_form_kwargs https://docs.djangoproject.com/en/1.8/ref/class-based-views/mixins-editing/#django.views.generic.edit.FormMixin.get_form_kwargs,以便视图将请求传递给表单。

class DocAddView(CreateView):
    ...
    def get_form_kwargs(self):
        # grab the current set of form #kwargs
        kwargs = super(DocAddView, self).get_form_kwargs()
        # Update the kwargs with the user_id
        kwargs['request'] = self.request
        return kwargs

这种方法的解释见这篇博文 http://www.pydanny.com/adding-django-form-instance-attributes.html.

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

根据请求更改表单字段 的相关文章

  • Ubuntu 16.04/Django - Gunicorn - Worker 无法启动

    我正在 Digital Ocean Ubuntu 16 04 VPS 上部署 Django 项目 我使用的是Django的一键安装 然后替换为我的项目 问题是服务器返回502 Error EDIT 没有realestate scanner
  • Django celery 4 - ValueError:启动 celery 工作程序时,以 10 为基数的 int() 的文字无效

    我已将 celery py 配置为其文档 但我将 celery 代理 URL 放入 AWS SQS 但无法启动它工作 当我运行 celery 工作程序时 我得到的 ValueError 为 File Users abd Desktop pr
  • 修改不同Django用户的会话数据

    这可能不可能 但是当某些情况发生时 我想修改某些登录用户的会话数据 标记一些额外的逻辑需要在下次加载页面时运行 有没有办法通过用户 ID 访问用户的会话 tldr Query Session模型 然后通过修改匹配会话SessionStore
  • Django 视图集没有属性“get_extra_actions”

    我第一次使用 Django 我正在尝试构建一个 API 我正在遵循一些教程和示例 它工作正常 但在安装所有要求和项目后 我现在正在 Raspberry Pi 中运行该项目失败并出现以下错误 Performing system checks
  • 将 Django 的 FileField 设置为现有文件

    我在磁盘上有一个现有文件 例如 folder file txt 在 Django 中有一个 FileField 模型字段 当我做 instance field File file folder file txt instance save
  • 字段“id”期望一个数字,但得到“natsu”django

    我想创建一个 user posts 视图 其中包含与特定用户相关的所有帖子 假设有用户 Natsu 撰写的博客帖子 那么登录用户 Testuser 将能够查看所有帖子由该用户发布 即用户 Natsu 的所有帖子 blog models py
  • 使用缓存时计算“页面浏览量”或“点击量”

    我有一个叫做show board 在其中 除其他外 我增加了一个字段Board views每次运行时加 1 以计算页面浏览量 问题是当我在该视图上使用 cache page 装饰器时 Board views仅在每次生成新的缓存视图时才会增加
  • Jquery 和 Django 多个复选框

    我是 jquery 的初学者 所以请耐心等待 我有一个 jquery 函数 允许我选择多个复选框并创建一个字符串 如下所示 function getSelectedVals var tmp input name checks each fu
  • django-admin.py makemessages 不起作用

    我正在尝试翻译一个字符串 load i18n trans Well Hello there how are you to Hola amigo que tal 我的 settings py 文件有这样的内容 LOCALE PATHS os
  • 如何添加身份验证中间件 JWT django?

    我正在尝试创建一个中间件来使用 JWT 进行身份验证 但在视图中 request user 始终是 AnonymUser 当我验证中间件通过用户模型更改 request user 时 确实如此 但在到达视图时 由于某种原因 request
  • Python 和 Django IDE 具有远程编辑功能吗?

    我正在寻找一个 IDE 它允许我编辑远程 Python 项目 并且还具有良好的 Django 支持 远程命令执行以及远程调试 我已经尝试使用 PyCharm 和 Aptana 与 PyDev 但我在配置它们进行远程编辑时运气不佳 感谢您的帮
  • Django 中基于类的视图分页

    我正在尝试对基于类的视图进行分页 这是我的观点 class IssuesByTitleView ListView context object name issue list def issues request issue list Is
  • TemplateSyntaxError:“settings_tags”不是有效的标签库

    当我尝试运行此测试用例时 出现此错误 这是在我的 django 应用程序的tests py 中编写的 def test accounts register self self url http royalflag com pk accoun
  • 配置 Django 和 Google 云存储?

    I am not使用应用引擎 我有一个在虚拟机上运行的普通 Django 应用程序 我想使用 Google Cloud Storage 来提供静态文件 以及上传 提供媒体文件 我有一个水桶 如何将 Django 应用程序链接到我的存储桶 我
  • Django 模板 - 我可以设置要在父模板中使用的变量吗?

    我有一个包含通用导航菜单的父模板 我希望能够添加class selected 到适当的菜单选项 我希望能够在子模板中设置变量 例如 set menu products and do ifequal menu products class s
  • 使用 pip3 安装 mysqlclient 时遇到问题

    我正在尝试使用 Django 设置 python 3 6 环境 安装说明说我应该安装 mysqlclient 才能连接到 mySQL 我明白了 dennis django sudo H pip3 install mysqlclient Co
  • django 中计数器的原子增量

    我正在尝试自动增加 Django 中的一个简单计数器 我的代码如下所示 from models import Counter from django db import transaction transaction commit on s
  • 具有内联模型的 Django 管理页面加载速度非常慢

    我有一个带有单个内联模型的模型的 Django 管理页面 当内联模型有很多项目 例如 75 个 时 页面加载速度非常慢 大约 30 秒 即使我排除内联模型上的所有字段 让它只渲染名称 情况也是如此 删除内联模型会导致页面加载速度非常快 以秒
  • Django 1.6 的静态文件

    我花了一整天但没有任何作用 我在这里看到了至少 20 篇关于同一主题的帖子 它们各不相同 有不同的建议 但没有一个对我有用 使用 Python 2 7 运行 Django 1 6 我正在尝试从 django 教程加载民意调查应用程序的 cs
  • Django 不显示更新的 css 文件

    因此 我使用 sass 来更新我的 Django 站点 并使用 git 来对整个内容进行版本控制 我最近对 CSS 文件进行了更新 其中存在一些严重错误 Sass 编译了更改 然后我将新版本推送到服务器 我查看了服务器 新的 css 文件实

随机推荐

  • EhCache和数据库刷新

    我正在使用 Spring 和 ehcache 使用查询将数据填充到缓存中 此过程必须每 10 分钟发生一次 有配置可以设置吗 提前致谢 通常 ehCache 将用于给出一个 ttl 以自动使缓存失效 根据我从您的问题中收集到的信息 您要求每
  • 需要在SQL Server 2008中使用CTC来实现业务需求

    对小规模的实施会有很大的帮助SP以满足以下要求 业务规则是 EndDate 应该是下一个规则的开始日期 否则规则不应该是 视为连续的 并将被视为其他规则系列 如 在下面的示例中显示有两个系列 因为第四个系列 它已经打破了记录 RuleId
  • 如何使用 Fish shell 设置宝石路径?

    如何使用 Fish shell 正确设置宝石路径 sanoy nice system D c h bellevue gt gem 安装包 警告 您的 PATH 中没有 home sanoy gem ruby 2 2 0 bin gem 可执
  • 如何使用java/spring boot读取Vault kv

    我正在尝试弄清楚如何使用Hashicorp s Vault与弹簧靴 最初 我尝试遵循该指南 https spring io guides gs vault config scratch https spring io guides gs v
  • Xcode 8 不显示整个 NSLog 输出

    今天升级到 Xcode 8 GM 后 我注意到 NSLog 没有将整个日志消息打印到控制台 当处理下载大量信息的 API 时 这一点尤其明显 例如 REST API 从数据库下载所有产品 它只显示第一个产品的前 30 个键 其余信息被裁剪
  • 在 Ruby 中实现贝叶斯分类器?

    我想实现一个简单的贝叶斯分类系统来对短信进行基本的情感分析 欢迎在 Ruby 中实施的实用建议 除贝叶斯之外的其他方法的建议也将受到欢迎 Ilya Grigorik 在这篇博客文章中对这个问题有一个很好的答案贝叶斯分类器 http www
  • 为什么一个整型变量在赋值给另一个变量后仍然可以使用?

    我试图了解 Rust 中的所有权是如何运作的 考虑以下简单示例 let u own 3432 let d own u own println u own 编译器不会抱怨 尽管所有权来自值3432已移至d own 最后一条语句是println
  • OpenCV中求已知纵横比的矩形的距离

    我正在开发一个 OpenCV 程序来查找从相机到具有已知长宽比的矩形的距离 求出从前向视图看到的到矩形的距离效果很好 实际距离与计算出的距离非常接近 wtarget pimage d c 2 ptarget tan fov 2 Where
  • AngularJS - $cancelRequest 在 $resource 中不可用

    我正在尝试触发中止请求 但是我没有收到 cancelRequest对象的结果 resource 但是 我能够得到 promise and resolved对象 为什么会发生这种情况 我怎样才能得到这个 cancelRequest PS 我正
  • 尝试通过 SSH 连接到远程主机时出错

    我正在尝试连接到远程主机以发出命令 但在运行代码时收到以下错误消息 ssh 握手失败 ssh 没有通用的密钥交换算法 客户提供 电子邮件受保护 cdn cgi l email protectionecdh sha2 nistp256 ecd
  • Hive 函数替换列值中的逗号

    我有一个配置单元表 其中字符串列的值为 12 345 有没有什么方法可以在插入此配置单元表期间删除逗号的配置单元函数 您可以使用regexp replace string INITIAL STRING string PATTERN stri
  • vbscript 使用 Ccur 四舍五入到小数点后两位

    我在用CCur 代替CDbl 正如这个问题中的回答 vbscript 数学表达式不起作用 https stackoverflow com questions 13569944 vbscript mathematical expression
  • 如何在 JTextPane 中为文本和下划线设置不同的颜色?

    刚刚尝试为 JTextPane 中的文本着色 但问题是文本和下划线不能有不同的颜色 我应该怎么做或者这是否可能 下面的示例以红色打印所有文本和下划线 JTextPane pane new JTextPane StyleContext con
  • 事件未在首页加载时加载,但在刷新后有效

    我正在创建一个名为员工管理系统的应用程序Rails 7 为了添加员工 我创建了一个表单 在这里 我使用nested form fields gem 来添加员工的联系人 问题是当第一次加载表单时 当我想添加或删除联系人字段时 它会重定向到同一
  • 从 dplyr 中选择函数时出错

    当我使用 dplyr 中的 select 函数时 它不起作用 并给出一个错误 指出我要选择的列名称是未使用的参数 但是 如果我在函数调用之前指定 dplyr 如 s dplyr select 那么它会正常工作 这是一个示例 df sampl
  • GCE:如何创建从外部端口80到内部端口5555的转发规则

    我第一次使用谷歌计算引擎 我想设置一个网络负载平衡器 具有静态IP 侦听端口80 但转发到侦听端口5555的后端服务器 我发现的所有示例都显示转发80到80 这在以下方面没有帮助我的情况 ref https cloud google com
  • 许多元素上的 ngClass 使网站非常慢

    我目前正在我的 Angular 6 应用程序中制作一个树视图 我正在使用它 嵌套和所有内容 我遇到的问题之一是 当我的页面有很多元素 几千个 并且它们都有 ngClass 在它们上 根据所选节点显示不同的颜色 页面往往会挂起很多 我创建了一
  • 通过鼠标单击并拖动绘制矩形 - javascript

    我试图在 Javascript 中绘制一个矩形 实际上是一个选择框 以选择选择中的 SVG 元素 我尝试修复单击并拖动矩形的代码 http jsfiddle net 7uNfW 26 http jsfiddle net 7uNfW 26 但
  • 如何在同一应用程序中运行 Spring Boot 管理客户端和服务器

    我想在同一个应用程序中运行 spring boot 管理服务器和客户端 我更改了服务器端口 当我更改服务器端口时 spring admin 将访问我更改的端口 这样我就可以运行管理服务器 但我看不到我的网络应用程序页面 我需要这样的输出 本
  • 根据请求更改表单字段

    应用程序有一个类别字段 可以在会话中设置 也可以不设置 如果是 我不想看到表单上的字段 只需将其作为隐藏字段 其值等于请求中的值 如果未设置 那么我想显示一个下拉菜单 我已经设置了表单以包含下拉列表 这是该字段的默认设置 我的问题是 将小部