首页
学习
活动
专区
工具
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。 注意 你可以重置数据库而不是迁移它,但如果这样做,既有的数据都将丢失。一种不错做 法是,学习如何在迁移数据库同时确保用户数据完整性。

11510

​第 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

76120

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

87510

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

43310

37.Django1.11.6文档

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

24.2K80

Django项目(四)

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

79830

使用 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

2.8K10

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.5K70

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认证系统,并学会如何管理用户、组和权限,以及如何自定义用户模型和用户界面。

7310

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时候。

4K40

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腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖

16410
领券