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

如何使用表单集自动使用已登录的用户填充我的Django Model 'updated_by‘字段?

在Django中,可以使用表单集(formset)来自动填充已登录用户的信息到Model的'updated_by'字段。下面是一个完善且全面的答案:

表单集(formset)是Django中的一个工具,用于处理多个表单的集合。在这个问题中,我们可以使用表单集来处理多个表单,其中一个表单用于更新Model的'updated_by'字段。

首先,我们需要创建一个表单,用于更新Model的'updated_by'字段。假设我们的Model名称为MyModel,'updated_by'字段是一个外键字段,关联到用户模型(User model)。

代码语言:txt
复制
from django import forms
from django.contrib.auth.models import User

class MyModelForm(forms.ModelForm):
    class Meta:
        model = MyModel
        fields = ['updated_by']
        widgets = {
            'updated_by': forms.HiddenInput()
        }

    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user', None)
        super(MyModelForm, self).__init__(*args, **kwargs)
        if self.user:
            self.fields['updated_by'].initial = self.user

在上面的代码中,我们定义了一个MyModelForm表单,指定了要更新的字段为'updated_by'。我们使用了一个隐藏输入框(HiddenInput)来存储用户信息。在表单的初始化方法中,我们接收一个'user'参数,该参数用于传递已登录的用户对象。如果有传递用户对象,我们将其设置为'updated_by'字段的初始值。

接下来,我们可以在视图函数中使用表单集来处理多个表单,并自动填充已登录用户的信息。

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

def my_view(request):
    MyModelFormSet = formset_factory(MyModelForm, extra=1)
    if request.method == 'POST':
        formset = MyModelFormSet(request.POST, user=request.user)
        if formset.is_valid():
            instances = formset.save()
            # 保存成功后的处理逻辑
    else:
        formset = MyModelFormSet(user=request.user)
    return render(request, 'my_template.html', {'formset': formset})

在上面的代码中,我们使用formset_factory创建了一个表单集MyModelFormSet,并指定了要使用的表单类为MyModelForm。在处理POST请求时,我们将request.POST和已登录的用户对象传递给表单集,以便自动填充用户信息。如果表单集验证通过,我们可以使用formset.save()保存表单数据,并进行后续处理。

在GET请求时,我们只需将已登录的用户对象传递给表单集即可。

最后,在模板文件中,我们可以使用formset来渲染表单集。

代码语言:txt
复制
<form method="post">
    {% csrf_token %}
    {{ formset.management_form }}
    {% for form in formset %}
        {{ form }}
    {% endfor %}
    <input type="submit" value="Submit">
</form>

在上面的代码中,我们使用formset.management_form渲染表单集的管理表单数据,然后使用循环渲染每个表单。

这样,当用户提交表单时,'updated_by'字段将自动填充为已登录用户的信息。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云数据库(TencentDB)。

腾讯云云服务器(CVM)是一种弹性计算服务,提供可扩展的云服务器实例,适用于各种应用场景。您可以根据业务需求选择不同配置的云服务器,并通过腾讯云控制台或API进行管理和操作。了解更多信息,请访问:腾讯云云服务器产品介绍

腾讯云数据库(TencentDB)是一种高性能、可扩展的云数据库服务,支持多种数据库引擎(如MySQL、Redis等),提供数据存储和管理的解决方案。您可以根据业务需求选择不同类型的数据库实例,并通过腾讯云控制台或API进行管理和操作。了解更多信息,请访问:腾讯云数据库产品介绍

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

相关·内容

登录注册小案例实现(使用Djangoform表单来进行用户输入数据校验)

,这个表单可以用来验证数据合法性还可以用来生成HTML代码 所以这个登录注册案例我们就来使用这个django自带form来生成前端页面以及验证数据. ②关于django form表单使用: 创建一个...表单是通过类实现,继承自forms.Form,然后在里面定义要验证字段....使用is_valid()方法可以验证用户提交数据是否合法,而且HTML表单元素name必须和django表单name保持一致,否则匹配不到....(2)在本案例中实战使用这个form表单: 在此名为mucisapp下创建forms.py文件,编写表单校验(用户登录和注册数据校验): from django import forms from...: 下面这个函数clean()是用于进行数据验证,本来想也写在此form表单校验里,但是后面在视图函数里写业务逻辑时发现, 如果验证成功,用户需要登录->这就意味着需要设置session

4.4K00
  • django:DateTimeField如何自动设置为当前时间并且能被修改 ——django日期时间字段使用

    创建djangomodel时,有DateTimeField、DateField和TimeField三种类型可以用来创建日期字段,其值分别对应着datetime()、date()、time()三中对象。...DateTimeField.auto_now 这个参数默认值为false,设置为true时,能够在保存该字段时,将其值设置为当前时间,并且每次修改model,都会自动更新。...需要注意是,设置该参数为true时,并不简单地意味着字段默认值为当前时间,而是指字段会被“强制”更新到当前时间,你无法程序中手动为字段赋值;如果使用django再带admin管理器,那么该字段在admin...editable=False将导致字段不会被呈现在admin中,blank=Ture表示允许在表单中不输入值。...实际场景中,往往既希望在对象创建时间默认被设置为当前值,又希望能在日后修改它。怎么实现这种需求呢? django中所有的model字段都拥有一个default参数,用来给字段设置默认值。

    7K80

    完整 Django 零基础教程|初学者指南 - 第 3 部分 转自:维托尔·弗雷塔斯

    在类图中,只提到了字段username 、password 、email 和超级用户 标志,因为这几乎是我们现在要使用全部内容。...您可以在下面看到类图和使用 Django 生成模型源代码之间比较。绿线代表我们如何处理反向关系。 ? 类图模型定义 此时,您可能会问自己:“主键/ID 怎么样”?...如果我们不为模型指定主键,Django自动为我们生成它。所以我们现在很好。在下一节中,您将更好地了解它是如何工作。 迁移模型 下一步是告诉 Django 创建数据库,以便我们可以开始使用它。...OK是我们在上一步中生成迁移。 就是这样!我们数据库准备好使用。 ? SQLite 注意:  重要是要注意SQLite 是一个生产质量数据库。...大容量网站、写入密集型应用程序、非常大数据、高并发性,这些情况最终会导致使用 SQLite 出现问题。 我们将在项目开发期间使用 SQLite,因为它很方便,我们不需要安装任何其他东西。

    2.2K40

    ​第 07 篇:创作后台开启,请开始你表演!

    访问 http://127.0.0.1:8000/ 首页,你就可以看到你添加文章列表了,下面是所在环境效果图: 定制 admin 后台 使用 admin 后台时候,我们发现了下面的一些体验相关问题...文章创建时间和修改时间应该根据当前时间自动生成,而现在是由人工填写,还有就是文章作者应该自动填充为后台管理员用户,那么这些自动填充数据字段就不需要在新增文章表单中出现了。...接下来是填充创建时间,修改时间和文章作者值。之前提到,文章作者应该自动设定为登录后台发布此文章管理员用户。...django admin 已经自动帮我们生成了),而如果用户登录了我们站点,那么 django 就会将这个用户实例绑定到 request.user 属性上,我们可以通过 request.user 取到当前请求用户...因为 timezone 模块中函数会自动帮我们处理时区,所以我们使用django 为我们提供 timezone 模块,而不是 Python 提供 datetime 模块来处理时间。

    1.1K20

    37.Django1.11.6文档

    第二,你可以利用Django自动HTML转义。 本节其余部分描述自动转义是如何工作。 默认情况下,Django每个模板会自动转义每个变量输出。...如果您使用initial来显示表单,则在处理该表单提交时,应该传递相同initial,以便表单可以检测用户更改哪些表单。...如何登录用户 如果你有一个认证了用户,你想把它附带到当前会话中 - 这可以通过login()函数完成。...login()使用Djangosession框架来将用户ID保存在session中。 请注意,匿名会话期间任何数据用户登录后都会保留在会话中。...在本文中,我们将讨论如何激活、使用和定制Django管理后台界面。 概述 通过使用startproject创建默认项目模版中,管理后台启用。

    24.3K80

    django 1.8 官方文档翻译: 5-1-1 使用表单

    使用表单 关于这页文档 这页文档简单介绍Web 表单基本概念和它们在Django 中是如何处理。关于表单API 某方面的细节,请参见表单 API、表单字段表单字段检验。...与 元素一样,一个表单必须指定两样东西: where:响应用户输入URL how:HTTP 方法 例如,Django Admin 站点登录表单包含几个 元素:type="...它还包含一些用户看不到隐藏文本字段Django 使用它们来决定下一步行为。...Django 登录表单使用POST 方法,在这个方法中浏览器组合表单数据、对它们进行编码以用于传输、将它们发送到服务器然后接收它响应。...更深入主题 这里只是基础,表单还可以完成更多工作: 表单表单集中使用初始化数据 限制表单最大数目 表单验证 验证表单集中表单数目 处理表单排序和删除 添加额外字段表单中 在视图和模板中视图表单

    4.2K20

    Django项目知识点(四)

    随便新建一个Django项目,默认会自动为我们创建一个/project_name/urls.py文件,并且自动包含下面的内容,这就是项目的根URL: 配置media媒体文件 settings.py #...json键值对,而不是列表 request.body就是form表单数据 Queryset Django ORM用到三个类:Manager、QuerySet、Model。...当我们需要对查询(queryset)某些字段进行计算或进行先分组再计算或排序, 我们就需要使用aggregate和annotate方法了。...这样就可以引用模型字段值并使用它们执行数据库操作,而无需实际将它们从数据库中拉出到Python内存中 说白了就是从数据库拿东西,但是有些需要字段没有,要通过绑定外键appmodel拿。...但是名称又是app__字段来命名,这样要改名称,而且拿第一次model,放在python内存中,再拿通过外键绑定另一个model,又要执行第一次步骤,那个效率就不行了,干嘛不一起拿,所以会用annotate

    1.6K30

    django 1.8 官方文档翻译: 3-4-3 使用基于类视图处理表单

    使用基于类视图处理表单 表单处理通常有3 个步骤: 初始GET (空白或预填充表单) 带有非法数据POST(通常重新显示表单和错误信息) 带有合法数据POST(处理数据并重定向) 你自己实现这些功能经常导致许多重复样本代码...这些通用视图将自动创建一个ModelForm,只要它们能知道使用哪一个模型类: 如果给出model属性,则使用该模型类。 如果get_object() 返回一个对象,则使用该对象类。...如果给出queryset,则使用该查询模型。 模型表单提供一个form_valid() 实现,它自动保存模型。如果你有特殊需求,可以覆盖它;参见下面的例子。...Changed in Django 1.8: 省略fields 属性在以前是允许,但是导致表单带有模型所有字段。...在这个视图中,请确保你没有将created_by 包含进要编辑字段列表,并覆盖form_valid() 来添加这个用户: #views.py from django.views.generic.edit

    1.8K20

    django 字段类型_access数据库类型是

    大家好,又见面了,是你们朋友全栈君。 字段类型 字段类型指使用Django ORM创建数据库时支持数据字段类型。...ImageField.height_field:每次保存模型实例时,模型字段名称都会自动填充图像高度。...ImageField.width_field:每次保存模型实例时,模型字段名称都会自动填充图像宽度。 (16) IntegerField 一个整数。...默认表单格式为TextInput。 (18) TextField 文本字段。默认表单小部件是Textarea,如果指定max_length属性,将反映在Textarea自动生成表单字段中。...接受与相同自动填充选项DateField。 (20) URLField 一个CharField一个URL,通过验证 URLValidator。 此字段默认表单小部件是TextInput。

    3.9K30

    Django开发社交类网站必备10个第三方应用

    Django 好处就是大而全,不仅内置了 ORM、表单、模板引擎、用户系统等,而且第三方应用生态也是十分完善,开发中大部分常见功能都能找到对应第三方实现。.../ 点评:增强 Django 内置 django.contrib.auth 模块,提供登录、注册、邮件验证、找回密码等一切用户验证相关功能。...django-imagekit 帮你配合 django model 模块自动完成图片裁剪、压缩、生成缩略图等一系列图片相关操作。.../en/latest/ 点评:配合 django 表单模块,方便地为表单添加一个验证码字段。...对验证性要求不高需求,例如注册表单防止机器人自动注册等使用起来非常方便。

    1.9K70

    Django】在大型项目中django性能模型字段primary_key

    默认表单部分将是包含这些选项选择框,而不是标准文本字段。 每个元组中第一个元素是要在模型上设置实际值,第二个元素是人类可读名称。...如果没有为模型中任何字段指定主键_Key=True,Django自动添加一个字段来保存主键,因此不需要在任何字段上设置主键_Key=True,除非想覆盖默认主键行为。...ROOT被定义为希望Django存储上传文件目录完整路径。(为了提高性能,这些文件不存储在数据库中。)MEDIA_ URL定义为目录基本公共URL。确保网络服务器用户帐户可以写入此目录。...所有这些都将存储在数据库中文件路径中(相对于MEDIA_ROOT)。可能会使用Django提供方便url属性。...接受与DateField相同自动填充选项。 此字段默认表单部分是TimeInput。一些JavaScript快捷方式添加到管理中。

    2K20

    探索Django:从项目创建到图片上传全方位指南

    输入完毕后,Django 将会在数据库中创建一个新超级用户,并使用你提供信息设置其登录凭据。这个超级用户可以用来登录Django 后台管理界面,进行网站管理和维护工作。...model = Image:在 Meta 类中,这行代码指定了表单对应模型是 Image。这意味着表单将基于 Image 模型生成字段。...,通过将 `request.POST` 和 `request.FILES` 传递给它来填充表单数据。...框架一些基本概念和使用方法,以及如何利用 Django 构建一个简单图像上传应用程序。...从项目创建到环境配置,再到 admin 端图像处理和用户图片上传,我们逐步学习了如何利用 Django 提供功能快速搭建 Web 应用。

    25573

    关于“Python”核心知识点整理大全59

    19.3.2 将数据关联到用户 现在,需要将数据关联到提交它们用户。我们只需将最高层数据关联到用户,这样更低 层数据将自动关联到用户。...为将所有既有主题都关联到管理用户ll_admin,输入了用户ID值1(见6)。并非必须使用 超级用户,而可使用创建任何用户ID。...接下来,Django使用这个值来迁移数据库,并生成 了迁移文件0003_topic_owner.py,它在模型Topic中添加字段owner。 现在可以执行迁移了。...19.3.4 保护用户主题 我们还没有限制对显示单个主题页面的访问,因此任何登录用户都可输入类似于 http://localhost:8000/topics/1/URL,来访问显示相应主题页面...= 'POST': # 初次请求,使用当前条目的内容填充表单 --snip-- 我们获取指定条目以及与之相关联主题,然后检查主题所有者是否是当前登录用 户,如果不是,就引发Http404

    13110

    django-db-comments: model移行时自动生成 table,column逻辑名称

    Django migrate迁移是 Django 将对模型model修改(例如增加一个字段,删除一个模型)应用至数据库架构中方式。生成移行文件时,自动差分。...\manage.py migrate # 生成移行文件,反映到数据库生成移行文件,在各app下·migrations文件夹下,例:app:master图片移行文件反映成功的话,存储在Django_migrations...表中图片移行后数据库表,没有表名,和列名注释图片django-db-comments:model移行时,自动作成伦理名(model コラム 論理名・コメント)django model field comment...in database可以将model中定义 【verbose_name】,【 help_text】添加到数据库表/列伦理名。...CREATE SCHEMA public;GRANT ALL ON SCHEMA public TO postgres;GRANT ALL ON SCHEMA public TO public;2,将生成移行文件

    76900

    Django 实战2:利用 Session 实现自动登录机制

    sessions 功能用是跟踪用户状态,经常结合 Cookie 功能实现自动登录功能。 所谓自动登录”指的是:我们登录一些网站,在不关闭浏览器以及距离上次登录时间不是很长情况下。...无论我们在新标签页打开网站,还是关闭页面重新打开网站,登录状态一直保持着。本文内容有两个:一是利用 Django 实现自动登录功能,二是揭开“自动登录神秘面纱。...当点击 login 成功之后,会跳转到首页,首页会显示用户名。同时,Cookie 中多了一个 sessionid 字段。这字段名就是我们在 setttings.py 定义。...查询数据库 django_session 表内容,会多出一条数据。 表中字段含义如下: session_key: 就是服务器给用户返回id。...这证明能自动登录。 如果用户退出登录,再访问首页。这时会发现看不到了 username 信息了。 5 小结 实现自动登录功能其实不难,只需要在 Django Sessions 组件。

    1.8K30

    Django+Vue开发生鲜电商平台之1.项目介绍

    文章目录 一、项目概览 二、项目技术要点 三、项目预览 永远相信只要永不放弃,我们还是有机会。...实现字段验证 序列化和表单验证 Serializer ModelSerializer 动态设置serializer 支付、登录和注册 json web token实现登录 手机注册 支付宝支付 第三方登录...进阶开发 djang rest framework部分核心源码解读 文档自动化管理 django rest framework缓存 Throttling对用户和ip进行限速 Vue主要技术点包括...API接口、Vue组件和Vue项目组织结构分析,还涉及到以下知识点: Vue技术选型分析 API后端接口数据填充到Vue组件模板 Vue代码结构分析 对于Django,会提供进阶知识点,包括如下: Django...migrations原理 Django信号量 Django从请求到响应完整过程 独立使用DjangoModel 除了这些技术点外,还会涉及到API开发过程中很多常见问题,如: 本地系统不能重现线上系统

    2.5K31

    Django内置通用类视图及实例

    参数,如果找到了这个参数,该方法使用这个参数值执行一个基于逐渐查询.如果这个参数没有找到,该方法查找slug_url_kwarg参数,使用slug_field字段执行针对slug查询.当query_pk_and_slug...,并重定向到get_success_url(),可以覆盖该方法在以上行为之间添加额外动作.该方法必须返回一个HttpResponse. form_invalid(form):如果表单验证失败,则使用填充表单数据和错误信息重新渲染上下文...属性: tamplate_name: form_class: fields:字段名称列表,其解释方式与ModelFormMeta.fields相同.如果你是自动生成表单类,那么该属性不能省略. success_url...显示用于编辑现有对象表单视图,重新显示具有验证错误信息视图,并且保存对象.这里使用从对象模型自动生成表单(除非手动制定表单类)....= employee #将 model 指定为Publisher,告诉 Django 要获取模型是 Publisher。

    2.9K40

    学习版pytest内核测试平台开发万字长文入门篇

    使用el-form标签添加用户名、密码、忘记密码和登录按钮。:model表单绑定了数据对象,分别填充到form.username、form.password、form.rememberMe: ?...:rules定义了表单规则,比如是否必填: ? 登录没有做用户名和密码校验,新增用户时才会做校验。...继承自serializers.ModelSerializer,一般需要在Meta定义两个属性,model指定相应模型,fields指定所需要字段,这些字段就是jsonkey。...修改用户,修改用户名、密码,修改测试角色用户为管理员角色,重新登录,能看到用户名、密码更新为修改后用户名、密码,并且管理员角色生效,能登进去看到后台管理功能。...切换分页,刷新列表,选择不同分页条数,正常计算显示相应分页总数。 找到自定义密码用户,点击重置密码,重置成功后,重新登录使用自定义密码登录失败,使用默认密码qa123456登录成功。

    4.9K30
    领券