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

Django admin -如何添加request.user作为内联模型的默认值?

在Django admin中,要将request.user作为内联模型的默认值,可以通过重写admin.ModelAdmin类的get_form方法来实现。具体步骤如下:

  1. 创建一个admin.py文件,并导入相关模块:
代码语言:txt
复制
from django.contrib import admin
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth.forms import UserChangeForm, UserCreationForm
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth.forms import UserChangeForm, UserCreationForm
from django import forms
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth.forms import UserChangeForm, UserCreationForm
from django import forms
  1. 创建一个自定义的表单类,继承自UserChangeForm,并添加一个新的字段:
代码语言:txt
复制
class MyUserChangeForm(UserChangeForm):
    class Meta(UserChangeForm.Meta):
        model = User

    def __init__(self, *args, **kwargs):
        super(MyUserChangeForm, self).__init__(*args, **kwargs)
        self.fields['request_user'] = forms.CharField(required=False, widget=forms.HiddenInput())
  1. 创建一个自定义的UserAdmin类,继承自BaseUserAdmin,并重写get_form方法:
代码语言:txt
复制
class MyUserAdmin(BaseUserAdmin):
    form = MyUserChangeForm

    def get_form(self, request, obj=None, **kwargs):
        form = super(MyUserAdmin, self).get_form(request, obj, **kwargs)
        form.request_user = request.user
        return form
  1. 注册自定义的UserAdmin类:
代码语言:txt
复制
admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)

这样,当在Django admin中创建或编辑用户时,request.user将作为内联模型的默认值。

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

相关·内容

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

中添加了字段owner,它建 立到模型User的外键关系。...在2处的输出中,Django指出我们试图给既有 模型Topic添加一个必不可少(不可为空)的字段,而该字段没有默认值。...在3处,Django给我 们提供了两种选择:要么现在提供默认值,要么退出并在models.py中添加默认值。在4处,我们 选择了第一个选项,因此Django让我们输入默认值(见5)。...接下来,Django使用这个值来迁移数据库,并生成 了迁移文件0003_topic_owner.py,它在模型Topic中添加字段owner。 现在可以执行迁移了。...正如你看到的,现在每个主题都属于用户ll_admin。 注意 你可以重置数据库而不是迁移它,但如果这样做,既有的数据都将丢失。一种不错的做 法是,学习如何在迁移数据库的同时确保用户数据的完整性。

14410

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

在 admin 后台注册模型 要在后台注册我们自己创建的几个模型,这样 django admin 才能知道它们的存在,注册非常简单,只需要在 blog\admin.py 中加入下面的代码: blog/admin.py...可以看到我们刚才注册的三个模型了,点击 Posts 后面的增加按钮,将进入添加 Post 的页面,也就是新增博客文章。...你可能想往文章内容中添加图片,但目前来说还做不到。在支持 Markdown 语法部分中将介绍如何在文章中插入图片的方法。...django admin 已经自动帮我们生成了),而如果用户登录了我们的站点,那么 django 就会将这个用户实例绑定到 request.user 属性上,我们可以通过 request.user 取到当前请求用户...答案是不能,因为虽然第一次保存数据时,会根据默认值指定为当前时间,但是当模型数据第二次修改时,由于 modified_time 已经有值,即第一次的默认值,那么第二次保存时默认值就不会起作用了,如果我们不修改

1.1K20
  • 【Django | 开发】面试招聘信息网站(快速搭建核心需求)

    产品背景 3.2唯快不破:迭代思维 3.3 如何使用迭代思想 四、数据建模&企业级数据库设计原则 4.1 数据建模 4.2 数据库设计原则 五、创建应用和模型 六、优化`admin` 6.1 分组填写...,后面修改和数据迁移操作会麻烦的多) 在 jobs.models.py应用中创建如下模型: from datetime import datetime from django.contrib.auth.models...default=User 这里的是User 对象(不是特定的user,需要request.user # 不要date 要的是 datetime, 引用函数 create_time = models.DateTimeField...,所以需要手动加上 obj.job_creator = request.user # obj.save() # super 实例的 save_model 方法的源码是...', 'phone', 'city') 三板斧运行服务器 六、优化admin 6.1 分组填写 很显然,表的结构太复杂,因为字段太多,所以我们需要优化admin,实现分组填写 from django.contrib

    78420

    【Django | 开发】面试招聘信息网站(用户登录注册&投在线递简历)

    文章目录 一、候选人登录注册 二、创建建立模型 三、用户在线投递简历 1)创建视图与模板 2) 优化表单细节 让简历进入到面试流程 一、候选人登录注册 方法一:使用django-registraion-reduex...用户模型扩展✨ ✨【Django | allauth】重写allauth重置密码方法✨ 二、创建建立模型 在jobs应用中添加如下模型 class Resume(models.Model):...注册该模型 @admin.register(Resume) class ResumeAdmin(admin.ModelAdmin): # exclude 不包括列表.隐藏字段(系统自定生成默认值为其值...super().save_model(request, obj, form, change) 4.效果 三、用户在线投递简历 1)创建视图与模板 创建类视图(与之前的函数不一样) 这里的类试图有很多写好的基类视图...city={{job.job_place}}&apply_position={{job.job_name}}" ······ 让简历进入到面试流程 admin.py添加如下代码 @admin.action

    90210

    【Django | 开发】面试招聘信息网站(划分面试官权限&集成钉钉消息)

    django.db.models import Q # 列表页显示默认先运行get_queryset,没有重写则全部显示 # 此时显示的数据集是对于Candidate模型的,不影响其他模型 def...) | Q(second_interviewer_user=request.user)) 成功实现 3) action行为权限 在添加群组时我们为interviewer群组添加了增删改查应聘者的权限...,这里再为普通面试官添加不可导出为csv action行为 的权限以及不可删除对象 (delete_selected)的权限 方法一:添加权限实现(为Candidate模型 中 Meta 为其设置自定义权限.../admin/actions/ (各种方法文档都有例子) 方法一:添加权限实现(为Candidate模型 中 Meta 为其设置自定义权限(元组)) ······· class Meta: db_table...(注意:这里的value就是你设置的权限) admin代码 总体代码思想,先在model模型添加Meta信息,数据库同步则会添加在群组权限设置中, 然后对action行为添加permission

    45710

    Django项目(四)

    个人中心页面 模板页说明 在一个项目中,我们一般会把相同的内容提取出来作为母版页来使用。我这里是直接下载好的,就不用母版页了。 个人中心页面 个人中心一共有三个页面,我的订单,个人中心,收获地址。...这就需要我们在登录验证的时候获取他要跳转的页面,验证成功后跳转,如何获取这个next的值?...post中的login(request,u)下添加: next_url = request.GET.get('next',reverse("xm_goods:index")) 我们已经设置默认值所以response...= redirect(next_url)这个也需要修改一下,get函数中如果没获取到值不会报错,会给个空值,但是你也可以给他添加第二个函数表示默认值。...,完全可以封装在模型管理类中。

    83130

    37.Django1.11.6文档

    Django如何区分它们URL的名字呢? 答案是添加命名空间到你的URLconf。...— 创建一个模型管理类,然后将其作为第二个参数传递给admin.site.register() (2)添加关联对象 在创建Question对象的同时可以直接添加一组Choice from django.contrib...在Django更改1.11: 添加了request参数。 认证后端 这一节详细讲述Django自带的认证后端。 关于如何使用它们以及如何编写你自己的认证后端,参见用户认证指南中的其它认证源一节。...覆盖此方法以编程方式确定最小内联表单数。 例如,这可以基于模型实例(作为关键字参数obj传递)。 使用具有两个或多个外键的模型与同一个父模型 有时可能有多个外键到同一个模型。 ...使用通用关系作为内联 可以使用内联与一般相关的对象。

    24.4K80

    自定义 Django 管理界面中的多对多内联模型

    问题背景在 Django 管理界面中,用户可以使用内联模型来管理一对多的关系。但是,当一对多关系是多对多时,Django 提供的默认内联模型可能并不适合。...具体步骤如下:创建一个新的内联模型类。这个类继承自 admin.TabularInline 或 admin.StackedInline。在新的内联模型类中,重写 get_formset() 方法。...这两个方法分别负责判断用户是否有添加和修改内联模型对象将新的内联模型类添加到 ModelAdmin 类中。在 ModelAdmin 类的 inlines 属性中,添加新的内联模型类。...下面是一个示例代码,演示了如何自定义多对多内联模型的显示方式:from django.contrib import adminfrom django.contrib.admin.utils import...return qs.filter(is_deleted=False)# 将自定义的内联模型类添加到 ModelAdmin 类中admin.site.register(Invoice, InvoiceAdmin

    12510

    使用 Django 的 admin 定制后台,丰富自己网站的后台管理系统

    admin 的注册 首先,如果要在 Django 的后台显示应用的模型,必须在应用所在的 admin.py 文件中注册模型。...最简单的模型注册 让我们来看一下 Django 的官方文档给的一个最基本的后台管理的注册方式: from django.contrib import admin from .models import...3步: 导入 admin 及需要注册的模型(这里是 Author) 创建一个模型的管理类,继承 admin.ModelAdmin,这个类的参数后面详细介绍 注册模型的管理类 使用装饰器来注册 其实上面的过程可以把第...2、3步结合起来,在创建模型的管理类的同时注册类,这就需要使用 admin 的装饰器,上面的例子改用装饰器之后的代码如下: from django.contrib import admin from ....list_display_links 这个属性是给 list_display 中展示的字段添加 标签属性的,也就是说添加了这个属性的字段都可以点击进入模型实例的内容页,如上图中所示,我给 title

    3.2K10

    Django admin 一些有用的设置

    有时容易忘记写注册语句,或者模型很多,不容易对应。 还有一种方式是用装饰器,该方法是Django1.7的版本新增的功能: ?...1 2 3 4 5 6 7 from django.contrib import admin from blog.models import Blog    #Blog模型的管理器 @admin.register...1 2 3 4 5 6 7 8 from django.contrib import admin from blog.models import Blog    #Blog模型的管理器 @admin.register...但是,我们看到标题并不是我们想要的,那么如何设置标题呢? 添加一行代码:colored_status.short_description = u"状态" ? 在函数结束之后添加上面代码即可 ?...我们如何修改这个app的名称达到定制的要求呢,其实Django已经在文档里进行了说明。 从Django1.7以后不再使用app_label,修改app相关需要使用AppConfig。

    2.6K70

    Django认证系统并不鸡肋反而很重要

    在使用django-admin startproject创建项目后,Django就默认安装了一个采用session实现的认证系统。这是Django相比于其他框架的一大特点:自带认证系统,开箱即用。...有人说它方便,有人说它鸡肋,但它作为Django的重要组成部分,学习它有助于我们理解Django框架的核心技术。...其中request.user就代表当前用户,如果未登陆它的值是AnonymousUser(匿名用户)的实例,如果已登陆它的值是User的实例。...它的处理是这样的: 如果用户没有登录,就重定向到settings.LOGIN_URL(默认值/accounts/login/),同时把当前的绝对路径添加到查询字符串中,如:/accounts/login...小结 本文介绍了Django自带的基于session的认证系统,阐述了用户、组、认证与授权的相关概念,以及session认证的技术细节,最后讲解了如何快速上手体验的操作步骤。

    1.1K10

    【云+社区年度征文】Django认证系统并不鸡肋反而很重要

    在使用django-admin startproject创建项目后,Django就默认安装了一个采用session实现的认证系统。这是Django相比于其他框架的一大特点:自带认证系统,开箱即用。...有人说它方便,有人说它鸡肋,但它作为Django的重要组成部分,学习它有助于我们理解Django框架的核心技术。...其中request.user就代表当前用户,如果未登陆它的值是AnonymousUser(匿名用户)的实例,如果已登陆它的值是User的实例。...它的处理是这样的: 如果用户没有登录,就重定向到settings.LOGIN_URL(默认值/accounts/login/),同时把当前的绝对路径添加到查询字符串中,如:/accounts/login...小结 本文介绍了Django自带的基于session的认证系统,阐述了用户、组、认证与授权的相关概念,以及session认证的技术细节,最后讲解了如何快速上手体验的操作步骤。

    1.6K70

    Django Admin后台管理:高效开发与实践

    通过这一章的学习,你将对Django Admin有基本的了解,并能够开始使用它来管理你的数据模型。后续章节将深入探讨如何定制和扩展Admin以满足项目需求。...添加操作按钮:使用actions属性来添加批量操作,如批量删除或标记为已读。 2.5 使用内联模型 内联模型允许在父模型的编辑页面中直接编辑相关联的模型。...使用内联模型:在父模型的Admin类中添加内联模型,如inlines = [RelatedModelInline]。...通过这一章的学习,你将能够更深入地定制Django Admin,使其更符合你的项目需求,并提供更好的用户体验。后续章节将进一步探讨如何使用Django Admin处理更复杂的场景和需求。...自定义密码重置:可以实现自定义的密码重置流程,包括发送重置邮件和处理重置请求。 通过这一章的学习,你将能够掌握Django的认证系统,并学会如何管理用户、组和权限,以及如何自定义用户模型和用户界面。

    26010

    Django admin管理工具的使用、定制及源码解析

    为了让 admin 界面管理某个数据模型,我们需要先注册该数据模型到 admin from django.db import models # Create your models here....BlogAdmin(admin.ModelAdmin): #listdisplay设置要显示在列表中的字段(id字段是Django模型的默认主键) list_display...但是,我们看到标题并不是我们想要的,那么如何设置标题呢? 添加一行代码:colored_status.short_description = u"状态" ? 在函数结束之后添加上面代码即可 ?...我们如何修改这个app的名称达到定制的要求呢,其实Django已经在文档里进行了说明。 从Django1.7以后不再使用app_label,修改app相关需要使用AppConfig。.../ 默认的django会自动根据我们定义的模型生成form给admin使用,使用到这个form的地方分别是change和add的时候。

    4.1K40

    【Django | allauth】useprofile 用户模型扩展

    创建扩展模型(添加字段)from django.contrib.auth.models import Userfrom django.db import models# Create your models...__str__())在 admin 文件 注册UseProfile模型from django.contrib import adminfrom userprofile.models import UserProfile...通过重写表单,你还可以很容易添加其它字段。...:我们在登录用户之后,此时系统是记录我们的用户信息的,而此时如果我们更改路径到admin中,输入我们的管理员账号会报 提供了两个参数的信息,这是因为管理员的用户信息和当前用户信息冲突了,需要signout...str (self)def str (self)verbose_name表单模型和表单的使用✨谢谢你的阅读,你的点赞和收藏是我创作的最大动力✨我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖

    21110
    领券