首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在CreateView中动态设置ForeignKey的初始值?

在CreateView中动态设置ForeignKey的初始值可以通过重写get_form_kwargs()方法来实现。get_form_kwargs()方法用于获取传递给表单的关键字参数。我们可以在这个方法中动态设置ForeignKey字段的初始值。

首先,需要在视图类中导入相关的模型和表单类。假设我们有两个模型,一个是Parent模型,另一个是Child模型,Child模型有一个ForeignKey字段指向Parent模型。

代码语言:txt
复制
from django.views.generic.edit import CreateView
from .models import Parent, Child
from .forms import ChildForm

然后,创建一个继承自CreateView的视图类,并指定模型和表单类。

代码语言:txt
复制
class ChildCreateView(CreateView):
    model = Child
    form_class = ChildForm
    template_name = 'child_create.html'

接下来,重写get_form_kwargs()方法,动态设置ForeignKey字段的初始值。在这个方法中,我们可以通过self.kwargs获取URL中的参数,然后根据这些参数来设置ForeignKey字段的初始值。

代码语言:txt
复制
    def get_form_kwargs(self):
        kwargs = super().get_form_kwargs()
        parent_id = self.kwargs.get('parent_id')
        kwargs['initial'] = {'parent': parent_id}
        return kwargs

在上面的代码中,我们首先调用父类的get_form_kwargs()方法获取默认的关键字参数。然后,使用self.kwargs.get('parent_id')获取URL中的parent_id参数,并将其作为ForeignKey字段的初始值。最后,将设置好的关键字参数赋值给kwargs['initial']。

最后,创建一个表单类ChildForm,并指定ForeignKey字段的初始值。

代码语言:txt
复制
from django import forms

class ChildForm(forms.ModelForm):
    class Meta:
        model = Child
        fields = '__all__'

    def __init__(self, *args, **kwargs):
        initial = kwargs.get('initial', {})
        parent_id = initial.get('parent')
        if parent_id:
            self.fields['parent'].initial = parent_id
        super().__init__(*args, **kwargs)

在上面的代码中,我们重写了表单类的init()方法,在初始化表单时,将ForeignKey字段的初始值设置为parent_id。

通过以上步骤,我们就可以在CreateView中动态设置ForeignKey字段的初始值了。在URL中传递parent_id参数,然后在视图类中重写get_form_kwargs()方法,将parent_id作为ForeignKey字段的初始值传递给表单类。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

何在 PowerBI 设置数值标签动态颜色

PowerBI 数值标签从 2022 年 8 月开始支持动态颜色了。 首先,需要下载最新版 Power BI Desktop。...渐变色方式 效果如下: 在【视觉对象】【数据标签】【值】【颜色】下设置即可。如下: 动态标记最大值与最小值 还可以用度量值进行设置,例如标记最大值与最小值。...度量值如下: View.Color = 注意 这里 DAX 用到《BI 真经》视图型计算方法,不再重复。...这样就可以通过度量值,动态标记颜色,如下: 扩展创意用法 太多标签比较乱,可以仅仅显示需要标签。...创建度量值: View.Color.OnlyMAX_MIN = 利用技巧:"#00000000" 设置透明度,让颜色不再显示。则可以得到效果: 总结 动态标签颜色又可以做很多事情了。

16.9K60

djangoModelForm多表单组合解决方案

#GET显示表单时,如果要显示初始值,请用initial参数           self.initial = initial or {}          #模板显示{{form}}时,默认是以...这里仅以CreateView为例说明,因为它相对最复杂,接下来多ModelForm提交也是在CreateView上进行。...比如CreateView就会由django自动把页面上POST出form数据解析到model生成表单(或者form_calss指定ModelForm类型表单),同时调用表单save方法将数据添加到模型对应数据库表...我们看看CreateView继承关系: 简单介绍下CreateView通用视图中每个父类作用。...所以,在用CreateView、一个模型、一个模板实现添加一行记录功能时是多么简单,因为这些父类会自动生成object,渲染到模板,解析form表单,save到数据库

3.3K20

layuilaydate使用——动态时间范围设置

需求分析 发起时间默认最大可选值为当前日期 发起时间从,最大可选日期为,发起时间至选中日期 发起时间至,最小可选日期为,发起时间从选中日期 单击重置时,发起时间从,发起时间至,时间范围限制恢复为默认情况...,即清空动态变化 比如:当前时间为2018.08.31,发起时间从,发起时间至,默认最大可选日期为2018.08.31,如果发起时间从,选择了2018.08.29,那么发起时间至,可选范围变成29号到31...endTime.config.min='1900-1-1'; startTime.config.max=endTime.config.max; }) 注意事项 done回调函数,...month设置必须-1,否则设置无效 reset()方法,只能使input输入框清空,无法清空动态时间限制 startTime.config.max=‘nowTime’不起作用 config.max...或min方法,可以根据实际需要选择是否对时分秒进行设置 laydate默认按钮为:清空、现在、确定,在这里要将清空、现在按钮取消,否则和时间范围限制冲突,且只能通过修改源码进行设置btns: ['confirm

7K10

良心教程 | 如何在Typora设置免费图床

设置好之后,写一篇教程,记录一下。 ❞ 「秀技能」 ❝今天同事发给我一个md文件,一往昔,图片没有显示出来,我说又到了我安利给你图床时候了,「免费」,「快速」,「粘贴后自动上传」,这三点不香吗。...这样,在Typora书写,在markdown nice渲染,然后复制到知乎和公众号上,非常流畅,多年梦想终于实现了。闭环感觉,别提多爽了,哈哈 ❞ 1....无论是免费图库,还是将项目放上面,还是将电子书放上面,还是将博客放上面,都非常方便。后面我介绍如何在上面使用bookdown写书。 ❞ 2....新建gitee项目 ❝飞哥注:这里主要是设置秘钥,然后copy到PicGo,就可以自动关联了。 ❞ 点击个人头像,点击设置: ?...设置PicGo ❝飞哥注:注意这里repo要填写用户名+项目名,不要有http,不要有git,比如dengfei2013/tuku ❞ 打开PicGo,找到图床设置,找到gitee,填写相关信息 repo

5.6K10

何在 React Select 标签上设置占位符?

在 React , 标签是用于创建下拉选择框组件。在某些情况下,我们希望在选择框添加一个占位符,以提醒用户选择合适选项。...本文将详细介绍如何在 React 标签上设置占位符,并提供示例代码帮助你理解和应用这个功能。...使用 disabled 属性一种常用方法是使用 disabled 属性来模拟占位符。通过将一个默认选项设置为禁用状态,我们可以在选择框显示一个占位符,并阻止用户选择该选项。...注意事项需要注意以下几点:通过设置一个禁用占位符选项,我们可以在选择框显示占位符文本,并阻止用户选择该选项。在处理选择框值时,需要使用事件处理函数来更新状态。...结论本文详细介绍了在 React 如何设置 标签占位符。

3K30

何在CDH配置YARN动态资源池计划规则

1.文档编写目的 ---- 在CDH中使用Yarn动态资源池,用户会根据时段来区分集群资源分配情况(:在夜晚时段集群资源主要倾向于跑批作业,白天时段集群资源主要倾向于业务部门实时计算作业)。...针对这样需求在CDH如何配置?本篇文章Fayson主要介绍如何通过CM配置Yarn动态资源池计划规则。...内容概述 1.创建资源池配置集 2.修改各配置集资源分配及验证 3.总结 测试环境 1.CM和CDH版本为5.15 2.创建资源池配置集 ---- 在CDH集群默认只有一个资源池配置集,接下来Fayson...5.修改完成各个配置集资源池配置后,点击“刷新动态资源池 ? 如上步骤完成各个配置集资源池配置。...5.总结 ---- 1.通过CM动态资源池配置,可以方便创建多个配置集。 2.根据不同时段对资源池使用进行重新分配,动态调整不需要手动触发。

6K61

何在Ubuntu 16.04上Jenkins设置持续集成管道

设置Jenkins访问GitHub 返回主Jenkins仪表板,单击左侧菜单Manage Jenkins: [Manage Jenkins] 在下一页链接列表,单击“ 配置系统”: [配置系统]...在GitHub帐户设置演示应用程序 为了演示如何使用Jenkins测试应用程序,我们将使用一个用Hapi.js创建“hello world”程序。...Test步骤打印另一条消息,然后按package.json文件定义运行测试。 我们可以设置Jenkins来监视Jenkinsfile存储库并在引入更改时运行该文件。...在Jenkins创建一个新管道 接下来,我们可以设置Jenkins使用GitHub个人访问令牌来查看我们存储库。...为了触发Jenkins设置适当hook,我们需要在第一次执行手动构建。 在管道主页面,单击左侧菜单“ 立即构建”: [立即构建] 这将开始新构建。

6K30

何在Redis实现分布式锁动态过期时间?

在 Redis 实现分布式锁是常见场景,而动态过期时间则是一种非常有用功能,可以根据业务需求灵活地调整锁有效期。下面我将详细介绍如何在 Redis 实现分布式锁,并实现动态过期时间。...在以上示例,acquire_lock 函数尝试获取锁并设置过期时间,release_lock 函数用于释放锁。...以下是一个示例代码,演示了如何在获取锁时动态设置过期时间: import redis # 连接 Redis r = redis.Redis(host='localhost', port=6379, db...在以上示例,我们通过 Lua 脚本实现了动态设置过期时间。脚本会比较当前锁过期时间与传入最大过期时间,如果当前过期时间小于传入最大过期时间,则更新过期时间。...通过合理设计和利用 Redis 提供命令和 Lua 脚本,我们可以实现分布式锁并动态设置过期时间,确保系统在高并发场景下数据一致性和稳定性。

12110

Linux/Mac命令行动态设置GolangGOPATH工作路径

Gopher们经常会遇到在多个$GOPATH来回切换工作场景,每次切换都要手动修改$GOPATH才能编译运行当前项目,很是不方便!!那么有没有自动修改$GOPATH方法呢?答案当然是肯定!...本人在 Linux/Mac命令行通过配置 `~/.zshrc` 文件实现了在窗口启动及调用`jj`命令时自动重置$GOPATH功能。...思路是: 首先判断当前目录是否在某个 `src` 目录下; 若在,则进一步判断当前路径对应GOPATH是否已经设置到环境变量; 若没有设置,则自动修改$GOPATH到当前路径。...步骤一:打开 `~/.zshrc` 文件 vim ~/.zshrc  步骤二:将下面代码拷贝到 `~/.zshrc` 文件,并保存 function setgopath() { currpath

2.8K30

何在Puppeteer设置User-Agent来绕过京东反爬虫机制?

正文Puppeteer 是一个由 Google 开发 Node.js 库,它提供了高级 API,用于控制无头浏览器(Headless Browser), Chrome 或 Chromium。...Puppeteer 实时端点位于它可以模拟用户在浏览器操作,包括点击、填写表单、截图等。这使得我们可以使用Puppeteer来模拟真实用户行为,获取想要数据。...例如,京东可能会检测到我们使用了自动化工具,并阻止我们访问。为了解决这个问题,我们可以使用代理服务器来隐藏我们真实IP地址,并设置合适User-Agent来模拟真实用户访问。...await browser.close();}main();当使用 User-Agent 时,有几个注意事项需要考虑:隐私保护:User-Agent 可能包含有关用户敏感信息,操作系统、浏览器版本等...版本控制:User-Agent 版本信息对于确定浏览器或设备功能和支持特性非常重要。在开发过程,可以根据不同 User-Agent 版本来选择适当代码路径或功能。

98850

根据数据源字段动态设置报表列数量以及列宽度

在报表系统,我们通常会有这样需求,就是由用户来决定报表需要显示数据,比如数据源中共有八列数据,用户可以自己选择在报表显示哪些列,并且能够自动调整列宽度,已铺满整个页面。...本文就讲解一下ActiveReports该功能实现方法。 第一步:设计包含所有列报表模板,将数据源所有列先放置到报表设计界面,并设置你需要列宽,最终界面如下: ?...第二步:在报表后台代码添加一个Columns属性,用于接收用户选择列,同时,在报表ReportStart事件添加以下代码: /// /// 用户选择列名称...if (tmp == null) { // 设置需要显示第一列坐标 headers[c...源码下载: 动态设置报表列数量以及列宽度

4.8K100

Android编程实现悬浮窗获取并显示当前内存使用量方法

本文实例讲述了Android编程实现悬浮窗获取并显示当前内存使用量方法。分享给大家供大家参考,具体如下: 运行效果: ? 其中: ? 这一块就是悬浮窗,可以随意拖动,动态显示当前内存使用量。...x、y初始值 wmParams.x = 0; wmParams.y = 0; // 设置悬浮窗口长宽数据 wmParams.width = WindowManager.LayoutParams.WRAP_CONTENT...x、y初始值 wmParams.x = 0; wmParams.y = 0; // 设置悬浮窗口长宽数据 wmParams.width = WindowManager.LayoutParams.WRAP_CONTENT...另:在设置View高度和宽度时候一 个错误,即在View构造函数获取getWidth()和getHeight(),当一个view对象创建时,android并不知道其大小,所以 getWidth()...: 在这里是设置成了所有应用程序之上,状态栏之下形式,当移动时候,会调用case MotionEvent.ACTION_MOVE: 下面的代码主要是: private void updateViewPosition

1.4K21

何在 Visual Studio 2019 设置使用 .NET Core SDK 预览版(全局生效)

但几个更新版本其开关位置不同,本文将介绍在各个版本位置,方便你找到然后设置。...,.NET Core 在设置是有一个专用选项,在这里: 工具 -> 选项 项目和解决方案 -> .NET Core -> 使用 .NET Core SDK 预览版 如果你是英文版 Visual....NET Core SDK 预览版设置是全局生效。...也就是说,你在 Visual Studio 2019 中进行了此设置,在命令行中使用 MSBuild 或者 dotnet build 命令进行编译也会使用这样设置项。...那么这个全局设置项在哪个地方呢?是如何全局生效呢?可以阅读我其他博客: Visual Studio 2019 中使用 .NET Core 预览版 SDK 全局配置文件在哪里?

1K20

DevExpress控件gridcontrol表格控件,如何在属性设置某一列显示为图片(图片按钮)

DevExpress控件gridcontrol表格控件,如何在属性设置某一列显示为图片(图片按钮)?效果如下图: ? 通过属性设置,而不用写代码。...由于此控件属性太多了,就连设置背景图片属性都有好几个地方可以设置。本人最近要移植别人开发项目,找了好久才发现这个属性位置。之前一直达不到这种效果。...属性设置步骤和方法如下: 首先添加gridcontrol控件,如下图,点击Run Designer ?...然后点击Columns添加列,点击所添加列再按照如下步骤设置属性: 在属性中找到ColumnEdit,把ColumnEditTextEditStyle属性设置为HideTextEditor;  展开...ColumnEdit,把ColumnEditButtons展开,将其Kind属性设置为Glyph; 找到其中Buttons,展开,找到其中0-Glyph,展开,找到其中ImageOptions

5.9K50
领券