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

覆盖模型中的save()方法以使用当前用户Django预先填充该方法

在Django中,覆盖模型中的save()方法可以用于在保存模型实例之前对其进行自定义操作。通过预先填充save()方法,我们可以在保存模型实例时自动填充当前用户。

首先,我们需要在模型中引入User模型类,以便获取当前用户的信息。可以通过以下方式导入:

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

然后,在模型类中覆盖save()方法,并在其中实现自定义逻辑。我们可以通过self.user来获取当前用户,然后将其填充到相应的字段中。以下是一个示例:

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

class YourModel(models.Model):
    # 模型字段定义

    def save(self, *args, **kwargs):
        if not self.pk:  # 如果是新建模型实例
            self.user = User.objects.get(username='当前用户名')  # 获取当前用户
        super().save(*args, **kwargs)  # 调用父类的save()方法保存模型实例

在上述示例中,我们通过User.objects.get(username='当前用户名')获取当前用户的User实例,并将其赋值给模型的user字段。请将'当前用户名'替换为实际的当前用户名。

这样,每当我们创建一个新的模型实例并保存时,save()方法会自动填充当前用户到user字段中。

关于Django的save()方法和模型的覆盖,您可以参考以下腾讯云文档链接:

相关搜索:覆盖django中的save方法取消django模型中的save from save方法覆盖保存方法以节省django模型中的ip地址Django:覆盖抽象基类模型中的模型方法Django模型管理save方法中的唯一约束错误我是否可以在Django中的模型删除方法中获取当前用户(通过该方法删除适当的m2m )?可以覆盖我的用户模型中的"is_active“方法吗?覆盖save方法以确保数据库中的完整性不起作用使用Django中的模型方法的自定义模型管理器我应该在哪里使用Django的save方法中的原子事务?Django避免了无限的save()循环,使用自定义模型方法保存了ImageField在模型中创建方法,该方法返回一个填充了“has_many Through子项”的新实例django -如何使用登录到模型的当前用户(以他不能选择其他用户的方式)如何在Django中使用POST方法创建的GET方法中查看API数据(没有模型)?尝试覆盖django rest框架中的update方法以在更新后返回整个查询集使用@use设置SASS模块“库”的正确方法是什么,以允许用户覆盖库变量?RoR:在不同的控制器中使用用户模型中定义的方法在UserCreationForm的Django中,要求用户填写用户模型的默认字段,比如名字和姓氏,最简单的方法是什么?Django -如何使用登录用户过滤的另一个模型中的字段填充model modelchoicefield中的选择要验证用户是否使用了要添加到后端Django中的过滤器的过滤器,正确的方法是什么?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

浅谈django 模型使用save()方法好处与注意事项

__class__, self).save(*args, **kwargs) 在django 模型类里,如果有些字段值是需要动态生成,那么就在模型类里同样添加上对应字段,并写上对应方法, 然后调用...save()方法,把自定义方法结果返回给那个字段,然后保存起来。...(下面情况如果遇到时再参考即可,表达有点乱,没有遇到这种情况可能会感觉莫名其妙,重点是红色字体部分) 同时,这样动态填充避免了在字段设置外键弊端(当外键对应字段值发生变化时,此模型类里已经记录数据也可能会受到影响...,) 尤其是需要记录消费信息时,会员身份变化时,对应折扣不一样,当会员身份升级时,如果消费记录只是在list页面用方法展示结果,没有使用save()将其填充到 对应字段,就会使消费记录因为关联性而发生不希望变动...以上这篇浅谈django 模型使用save()方法好处与注意事项就是小编分享给大家全部内容了,希望能给大家一个参考。

2.6K21

37.Django1.11.6文档

模型实例不包含数据情况下,在模板对它做处理很少有什么用处。 但是渲染一个未填充表单却非常有意义 —— 我们希望用户填充它。 所以当我们在视图中处理模型实例时,我们一般从数据库获取它。...当我们实例化表单时,我们可以选择让它为空还是预先填充它,例如使用: 来自一个保存后模型实例数据(例如用于编辑管理表单) 我们从其它地方获得数据 从前面一个HTML 表单提交过来数据 获取HTML...此方法将返回当前活动用户模型 — 如果指定了自定义用户模型,否则返回User。 在定义到用户模型外键或多对多关系时,应使用AUTH_USER_MODEL设置指定自定义模型。 ...即使正常情况下,您将在request.user上检查此属性,了解它是否已由AuthenticationMiddleware填充(表示当前登录用户),您应该知道对于任何User实例,此属性为True。...覆盖方法编程方式确定最小内联表单数。 例如,这可以基于模型实例(作为关键字参数obj传递)。 使用具有两个或多个外键模型与同一个父模型 有时可能有多个外键到同一个模型

24.3K80
  • django 1.8 官方文档翻译: 2-3-1 模型实例参考

    如果你需要从数据库重新加载模型一个值,你可以使用 refresh_from_db() 方法。当不带参数调用这个方法时,将完成以下动作: 模型所有非延迟字段都更新成数据库当前值。...一个辅助方法,它返回一个集合,包含模型当前所有延迟字段属性名称。...发送一个django.db.models.signals.pre_save 信号,允许监听信号函数完成一些自定义动作。 2. 预处理数据。 如果需要,对对象每个字段进行自动转换。...发出一个post-save 信号。 发送一个django.db.models.signals.post_save 信号,允许监听听信号函数完成一些自定义动作。...详见覆盖预定义模型方法。 Pickling 对象 当你pickle 一个模型时,它的当前状态是pickled。

    1.9K10

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

    文章创建时间和修改时间应该根据当前时间自动生成,而现在是由人工填写,还有就是文章作者应该自动填充为后台管理员用户,那么这些自动填充数据字段就不需要在新增文章表单中出现了。...django admin 已经自动帮我们生成了),而如果用户登录了我们站点,那么 django 就会将这个用户实例绑定到 request.user 属性上,我们可以通过 request.user 取到当前请求用户..., obj, form, change) 最后还剩下文章创建时间和修改时间需要填充,一个想法我们可以沿用上面的思路,复写 save_model 方法,将创建 post 对象关联当前时间,但是这存在一个问题...所以这里问题关键是每次保存模型时,都应该修改 modified_time 值。每一个 Model 都有一个 save 方法,这个方法包含了将 model 数据保存到数据库逻辑。...通过覆写这个方法,在 model 被 save 到数据库前指定 modified_time 值为当前时间不就可以了?

    1.1K20

    如何在 Django 创建抽象模型类?

    在应用程序,可以使用抽象模型定义多个模型共享相似字段和行为。使用 Django,您可以定义一个派生自 Django.db.models 模型类,建立一个抽象模型类。...在 Django ,从抽象模型继承遵循与传统模型相同准则。超类声明所有字段和方法都由子类继承,子类可以根据需要替换或添加它们。开发从抽象模型派生模型时,不应将抽象属性设置为 True。...创建抽象模型步骤 步骤 1 - 设置一个继承自 django.db.models 新类。抽象模型使用模型。此类可以具有您喜欢任何名称,但最好使用准确描述它在应用程序功能名称。...默认情况下,如果未提及任何内容,则将使用当前时间填充这些字段值。我们创建了另一个名为“ArticleModel”模型模型在参数获取抽象模型使用这些字段。它包含两个字段,“名称”和“作者”。...我们使用类似的方法来创建一个抽象模型,但在这里我们在两个单独模型使用相同抽象模型

    21430

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

    修饰符as_p让Django段落格式渲染所有表单元素,这是一种整洁地显 示表单简单方式。 Django不会为表单创建提交按钮,因此我们在4处定义了一个这样按钮。 6....通过设置属性widgets,可覆盖Django选择默认小部件。...如果请求方法为POST,我们就对数据进行处理:创建一个EntryForm 实例,使用request对象POST数据来填充它(见4);再检查表单是否有效,如果有效,就设 置条目对象属性topic,再将条目对象保存到数据库...调用save()时,我们传递了实参commit=False(见5),让Django创建一个新条目对象,并 将其存储到new_entry,但不将它保存到数据库。...= 'POST': # 初次请求,使用当前条目填充表单 2 form = EntryForm(instance=entry) else: # POST提交数据,对数据进行处理 3 form =

    13510

    Django框架学习(三)

    {% extends "父模板路径"%} 子模版不用填充父模版所有预留区域,如果子模版没有填充,则使用父模版定义默认值。 填充父模板中指定名称预留区域。...4.数据库 ORM框架: 作用:将模型类和数据表进行对应,通过面向对象方式进行数据库操作。 flaskSQLALchemy Django自带ORM框架,可以直接进行使用。...FloatField 浮点数 DateField 日期, 参数auto_now表示每次保存对象时,自动设置字段为当前时间,用于"最后一次修改"时间戳,它总是使用当前日期,默认为False; 参数auto_now_add...子应用会默认为我们创建一些表, 4.4演示工具使用 4.4.1shell工具 Djangomanage工具提供了shell命令,帮助我们配置好当前工程运行环境(如连接好数据库等),以便可以直接在终端执行测试...() 修改模型类对象属性,然后执行save()方法 hero = HeroInfo.objects.get(hname='猪八戒') hero.hname = '猪悟能' hero.save() 2

    1.8K40

    Django | allauth】useprofile 用户模型扩展

    1)自定义表单类 (这里需求是需要附加输入,建议使用这种方法) 注意!!!...: 自定义表单 在配置好之后,是直接引入到allauth.account,forms,这个时候是不能使用 重写继承方法!,不然引入父类操作会陷入调用循环!...图片 原理: allauth应用 根据setting account_signup_form_class值(路由)引入表单类,将该表单类方法 siginup 替换掉原生注册表单# 自定义表单...: 我们在登录用户之后,此时系统是记录我们用户信息,而此时如果我们更改路径到admin,输入我们管理员账号会报 提供了两个参数信息,这是因为管理员用户信息和当前用户信息冲突了,需要signout...当前用户 当输入密码错误时也会报和上面一样错误(当时调试了好久) 图片 效果: 图片 参考文献: 扩展用户自带模型(allauth) 扩展用户自带user模型(非allauth实现) 外键related_name

    1.1K10

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

    有一个额外可选参数:max_length,字段最大长度,字符为单位。最大长度在django验证中使用强制执行MaxLengthValidator。...参数: auto_now:每次修改保存修改为当前日期时间,对于“最后修改” 时间戳有用。在使用Model.save()保存时有效,使用QuerySet.update() 时不会自动更新。...(13) FileField 文件上传字段,不支持primary_key参数,使用参数时将引发错误。 有两个可选参数: upload_to:设置上传目录和文件名方法,并且可以通过两种方法进行设置。...定义MEDIA_URL为目录基本公共URL,确保目录可由web服务器用户账号写入。...(19) TimeField 时间,在Pythondatetime.time实例表示。接受与相同自动填充选项DateField。

    3.9K30

    后端框架学习-Django

    MVC 一种插件式、松耦合方式连接在一起。 模型(M)- 编写程序应有的功能,负责业务对象与数据库映射(ORM)。 视图(V)- 图形界面,负责与用户交互(页面)。...b.如果涉及到数据调用,那么视图函数调用模型模型去数据库查找数据,然后逐级返回。 视图函数把返回数据填充到模板中空格,最后返回网页给用户。...一个模型类代表数据库一张数据表 模型每一个类属性都代表数据库一个字段 模型是数据交互接口,是表示和操作数据库方法和方式。...中间件形式体现 每个中间件负责一些特定功能 中间件方法 继承django.utils.deprecation.MiddlewareMixin类 中间件类须实现下列五个方法一个或多个: process_request...,Django接到特征请求后去MEDIA_ROOT路径查找资源 文件写入: 1.open方法 可能出现文件名称重名问题 # 在视图函数POST a_file = request.FILES['

    9.5K40

    Django | allauth】useprofile 用户模型扩展

    1)自定义表单类 (这里需求是需要附加输入,建议使用这种方法)注意!!!...: 自定义表单 在配置好之后,是直接引入到allauth.account,forms,这个时候是不能使用 重写继承方法!,不然引入父类操作会陷入调用循环!...图片原理: allauth应用 根据setting account_signup_form_class值(路由)引入表单类,将该表单类方法 siginup 替换掉原生注册表单# 自定义表单class...:我们在登录用户之后,此时系统是记录我们用户信息,而此时如果我们更改路径到admin,输入我们管理员账号会报 提供了两个参数信息,这是因为管理员用户信息和当前用户信息冲突了,需要signout...当前用户当输入密码错误时也会报和上面一样错误(当时调试了好久)效果:图片参考文献:扩展用户自带模型(allauth)扩展用户自带user模型(非allauth实现)外键related_namedef

    19710

    初探Django框架

    MTV模型 首先要知道一点, Django框架使用并不是我们常见MVC模型而是MTV模型, 提前了解这点对我们理解后面对各个模型作用和框架整体工作流程是非常有帮助。...manage.py: 一个实用命令行工具,可让你各种方式与 Django 项目进行交互。...Django2. 0可以使用 re_path() 方法来兼容 1.x 版本 url() 方法,一些正则表达式规则也可以通过 re_path() 来实现 Django 模板 想要使用模板那么我们要先在容器下创建一个模板目录...b.如果涉及到数据调用,那么视图函数调用模型模型去数据库查找数据,然后逐级返回。 模型将视图函数所需要数据返回到视图函数, 然后视图函数再把返回数据填充到模板中空格,最后返回网页给用户。...session 唯一可读写属性,代表当前会话字典对象。只有激活Djangosession支持时属性才可用。

    2K20

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

    = 'POST': # 初次请求,使用当前条目填充表单 2 form = EntryForm(instance=entry) else: # POST提交数据,对数据进行处理 3 form =...在1处,我们获取用户要修改条目对象,以及与该条目相 关联主题。在请求方法为GET时将执行if代码块,我们使用实参instance=entry创建一个 EntryForm实例(见2)。...这个实参让Django创建一个表单,并使用既有条目对象信息填充它。 用户将看到既有的数据,并能够编辑它们。...我们将提交按钮命名为save changes,提醒用户:单击按钮将保存所做编辑,而不是创建一个新条目(见2)。 4....身份验证系统,每个模板都可使用变量user,这个变量有一个is_authenticated 属性:如果用户已登录,属性将为True,否则为False。

    9410

    Django模型model

    定义模型类 在模型定义属性,会生成数据库表字段 django根据属性类型确定以下信息: 当前选择数据库支持字段类型 渲染管理表单时使用默认html控件 在管理站点最低限度验证 django...实例表示日期 参数DateField.auto_now:每次保存对象时,自动设置字段为当前时间,用于"最后一次修改"时间戳,它总是使用当前日期,默认为false 参数DateField.auto_now_add...:当对象第一次被创建时自动设置当前时间,用于创建时间戳,它总是使用当前日期,默认为false 字段默认对应表单控件是一个TextInput....模型字段选项 通过字段选项,可以实现对字段约束 在字段对象时通过关键字参数指定 null:如果为True,Django 将空值NULL 存储到数据库,默认值是 False blank:如果为True...不会对数据库进行读写操作 在管理器方法,可以通过self.model来得到它所属模型类 调用save()方法才与数据库交互,将对象保存到数据库 使用关键字参数构造模型对象很麻烦,推荐使用下面的两种之式

    14010

    django 1.8 官方文档翻译: 2-5-6 多数据库

    如果没有提供Hint 实例,或者实例当前没有数据库状态,主路由将分配default 数据库。 一个例子 只是为了示例! 这个例子目的是演示如何使用路由这个基本结构来改变数据库使用。...将对象从一个数据库移动到另一个数据库 如果你已经保存一个实例到一个数据库,你可能很想使用save(using=...) 来迁移实例到一个新数据库。...当保存在statement 2发生时,p已经具有一个主键,Django 将尝试在新数据库上使用主键。...然而,如果p 主键在second数据库上已经在使用second 数据库已经存在对象将在p保存时被覆盖。 你可以用两种方法避免这种情况。首先,你可以清除实例主键。...第二种方法使用force_insert 选项来save()确保Django 使用一个INSERT SQL: >>> p = Person(name='Fred') >>> p.save(using=

    1.5K20

    django 1.8 官方文档翻译: 1-1-1 Django初探

    设计你模型(model) 尽管你在 Django 可以不使用数据库,但是它提供了一个完善可以用 Python 代码描述你数据库结构对象关联映射(ORM)。...数据模型语法 提供了许多丰富方法来展现你模型 – 到目前为止,它已经解决了两个多年积累下来数据库架构问题。...,然后再调用 save() 方法来改变它。...Django 模板系统,模板系统功能强大且简单易用,甚至非编程人员也会使用。...您可以使用其他数据库抽象层,您可以读取 XML 文件,你可以从磁盘读取文件,或任何你想要方法去操作数据。 Django 每个组成部分: 模型、视图和模板都可以解耦,以后会谈到。

    76220

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

    这些通用视图将自动创建一个ModelForm,只要它们能知道使用哪一个模型类: 如果给出model属性,则使用模型类。 如果get_object() 返回一个对象,则使用对象类。...如果给出queryset,则使用查询集模型模型表单提供一个form_valid() 实现,它自动保存模型。如果你有特殊需求,可以覆盖它;参见下面的例子。...模型和request.user 为了跟踪使用CreateView 创建一个对象用户,你可以使用一个自定义ModelForm 来实现这点。...在这个视图中,请确保你没有将created_by 包含进要编辑字段列表,并覆盖form_valid() 来添加这个用户: #views.py from django.views.generic.edit...login_required() 来装饰这个视图,或者在form_valid() 处理未认证用户

    1.8K20

    Django 模型自定义Manager和模型方法

    修改初始Manager Queryset manager基础Queryset返回系统所有对象.例如,Book.objects.all()返回book数据库所有书籍.你而已通过覆盖Manager.get_queryset...如果你使用自定义Manager对象,请注意,Django遇到第一个Manager(它在模型中被定义位置为准)会有一个特殊状态。...因为覆盖get_queryset()了,你可能接受到一个无用返回对像,你必须避免这种情况. 2.自定义模型方法 为了给你对像添加一个行级功能,那就定义一个自定义方法.鉴于manager经常被用来用一些整表操作...Obama' 3.重写预定义模型方法 还有一组模型方法了封装了一些你可能想要自定义数据库行为.特别是你可能想要修改save()和delete()工作方式.你可以自由重写这些方法(以及其他模型方法...,即super(Blog, self).save(*args, **kwargs),它确保对象仍被保存到数据库.如果你忘记调用超类方法,那么默认行为将不会发生,也不会发生数据库操作.

    2.8K20
    领券