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

我是否可以在Django中的模型删除方法中获取当前用户(通过该方法删除适当的m2m )?

是的,您可以在Django中的模型删除方法中获取当前用户。在Django中,可以使用request对象来获取当前用户的信息。但是在模型中,无法直接访问request对象。为了解决这个问题,您可以通过以下几种方式来实现:

  1. 传递request对象作为参数:在调用模型删除方法时,将request对象作为参数传递进去。例如:
代码语言:python
复制
def delete_model(self, request=None):
    if request:
        user = request.user
        # 根据需要进行其他操作
    super().delete()
  1. 使用全局变量:在模型删除方法中,可以使用全局变量来存储当前用户的信息。在视图函数中,将request对象赋值给全局变量,然后在模型中访问该全局变量。例如:
代码语言:python
复制
current_user = None

def my_view(request):
    global current_user
    current_user = request.user
    # 调用模型删除方法

def delete_model(self):
    if current_user:
        user = current_user
        # 根据需要进行其他操作
    super().delete()
  1. 使用信号(Signal):Django提供了信号机制,可以在模型删除之前发送信号,然后在信号的接收器中获取当前用户的信息。例如:
代码语言:python
复制
from django.db.models.signals import pre_delete
from django.dispatch import receiver

@receiver(pre_delete, sender=YourModel)
def delete_model(sender, instance, **kwargs):
    user = instance._request_user
    # 根据需要进行其他操作

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

    _request_user = models.ForeignKey(User, on_delete=models.CASCADE)

在视图函数中,创建模型对象时,将当前用户赋值给_request_user字段。然后在模型删除方法中,通过信号接收器获取_request_user字段的值。

以上是几种可以在Django中的模型删除方法中获取当前用户的方法。根据您的具体需求和项目架构,选择适合的方式来实现即可。

关于Django的更多信息,您可以参考腾讯云的Django产品介绍

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

相关·内容

Django admin管理工具

可以项目的 settings.py INSTALLED_APPS 看到它: # Application definition INSTALLED_APPS = [ 'django.contrib.admin...使用管理工具 启动开发服务器,然后浏览器访问 http://127.0.0.1:8000/admin/,得到登陆界面,你可以通过命令 python manage.py createsuperuser...为了让 admin 界面管理某个数据模型,我们需要先注册数据模型到 admin from django.db import models # Create your models here....admin.py只需要讲Mode某个类注册,即可在Admin实现增删改查功能,如: admin.site.register(models.UserInfo) 但是,这种方式比较简单,如果想要进行更多定制操作...4. list_select_related,列表时,连表查询是否自动select_related 5. list_editable,列表时,可以编辑列  @admin.register(models.UserInfo

1K10

Django REST Framework-常用权限类型

DjangoModelPermissions:基于Django模型权限控制。允许用户执行特定操作之前检查模型权限。...如何使用权限Django REST Framework权限通常通过将它们附加到视图类来使用。您可以通过将类变量permission_classes设置为适当权限类列表来指定要使用权限。...示例以下是一个更完整示例,展示如何在Django REST Framework中使用权限。假设我们有一个名为Snippet模型,它表示代码片段,我们希望只有创建代码片段用户才能够修改或删除它。...这个权限类检查当前请求用户是否是代码片段所有者,如果是则允许修改或删除。否则,只允许读取操作。...put()方法,我们使用self.request.user将当前请求用户设置为代码片段所有者。这样,如果用户成功更新代码片段,他们就会成为代码片段新所有者。

1.4K20

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

唯一区别就是 这种方法 是登录http://ip/admin/ 站点和用户组在一起 ? 而第一种方法是分开。 5.通过当前登录用户过滤显示数据 官方文档介绍: ?...2、编辑字段集合 不过,不怎么用fields和exclude。用得比较多是fieldsets。设置可以对字段分块,看起来比较整洁。...这时我们就可以通过重写 get_readonly_fields 方法来实现对特定用户只读显示。...我们也可以修改数据时获取保存前数据: ? 通过change参数,可以判断是修改还是新增,同时做相应操作。上述代码就是替换磁盘时候修改状态,并写入日志。...' 通过自定义列表字段,获取相关数据再列表显示,效果如下: ?

4K40

django写接口(优化篇)

作者:Kuky_xs 博客:https://www.jianshu.com/u/9fcd71535294 前言 系列文章: 《django入门:环境及项目搭建》 《django入门:数据模型》 《django...入门:视图及模版》 《django入门:Admin管理系统及表单》 《django入门:通用视图类重构视图》 《用django写接口(入门篇)》提到这篇会讲 views 代码优化,在这之前,我们先适当了解下...省略 # 将该视图请求方法写在注解,表示接口只接受列表内请求方式 @api_view(['GET', 'POST']) def post_list(request): if request.method...,接着,觉得有必要把自己 Android 端做接口测试代码和运行结果贴出来,不然你们又会觉得坑你们了......这边为了偷懒(嗯对,就是偷懒),又写了一个只有单个字段 model ?...获取列表 ? 获取列表结果 ? 新建数据 ? 新建数据返回结果 ? 获取详情 ? 获取详情返回结果 ? 更新详情 ? 更新详情返回结果 ? 删除数据 ? 删除数据返回结果 有坑!

2.1K20

Django内置Admin

Django内置Admin是对于model对应数据表进行增删改查提供组件,使用方式有: 依赖APP: django.contrib.auth django.contrib.contenttypes...配置路由 1 2 3 urlpatterns = [         url(r'^admin/', admin.site.urls),     ] 当前配置路由可以创建一些路由映射关系: /admin...定制Admin admin.py只需要讲Mode某个类注册,即可在Admin实现增删改查功能,如 1 admin.site.register(models.UserInfo) 但是,这种方式比较简单...New in Django 1.10. 12. save_on_top = False,详细页面,页面上方是否也显示保存删除等按钮 13. inlines,详细页面,如果有其他表和当前表做FK,那么详细页面可以进行动态增加和删除...    actions_on_top = True     # Action选项都是页面下方显示     actions_on_bottom = False       # 是否显示选择个数

1.4K90

Admin组件

大家好,又见面了,是你们朋友全栈君。 Django 提供了admin 组件 为项目提供基本管理后台功能(对数据表增删改查)。...和 python manage.py migrate 启动开发服务器,然后浏览器访问 http://127.0.0.1:8000/admin/,得到登陆界面,你可以通过命令 python manage.py...为了让 admin 界面管理某个数据模型,我们需要先注册数据模型到 admin from django.db import models class Author(models.Model):...当你希望整个系统,某个类只能出现一个实例时, 单例对象就能派上用场。 比如,某个服务器程序配置信息存放在一个文件,客户端通过一个 AppConfig 类来读取配置文件信息。...因此,我们只需把相关函数和数据定义一个模块,就可以获得一个单例对象了。

1.6K30

Web | Django 与数据库交互,你需要知道 9 个技巧

Django 2.0 ,values_list 方法参数添加了一个叫做 named 属性。...User) 在上面的模型Django 将会隐式创建两个索引:一个用于用户,一个用于组。...M2M 模型另一个常见模式是两个字段一起作为一个唯一约束。...顾名思义,BRIN 索引会在表格一系列相邻块上创建一个小型索引。索引非常小,只能说明某个值是否范围内,或者是否索引块范围内。 我们来做一个 BRIN 索引如何帮助我们简单例子。...创建索引时要考虑要比索引大小要多得多。但是现在,通过 Django 1.11 支持索引,我们可以轻松地将新类型索引整合到我们应用程序,使它们更轻,更快。

2.8K40

Django之admin使用和源码剖析

可以项目的 settings.py INSTALLED_APPS 看到它: # Application definition INSTALLED_APPS = [ 'django.contrib.admin...使用管理工具 启动开发服务器,然后浏览器访问 http://127.0.0.1:8000/admin/,得到登陆界面,你可以通过命令 python manage.py createsuperuser...为了让 admin 界面管理某个数据模型,我们需要先注册数据模型到 admin from django.db import models class Author(models.Model):...当你希望整个系统,某个类只能出现一个实例时,单例对象就能派上用场。 比如,某个服务器程序配置信息存放在一个文件,客户端通过一个 AppConfig 类来读取配置文件信息。...因此,我们只需把相关函数和数据定义一个模块,就可以获得一个单例对象了。

2.1K00

后端框架学习-Django

/templates settings.pyTEMPLATE配置项 BACKEND:指定模板引擎 DIRS:模板搜索目录(可以是一个或多个) APP_DIRS:是否应用templates文件夹搜索末班文件...tests.py views.py:视图函数 分布式路由 Django,主路由配置文件可以不处理用户具体路由,主路由配置文件可以做请求分发(分布式请求处理)。...1.单个数据删除 查找对应数据对象 调用数据对象delete()方法实现删除 2.批量数据删除 查找QuerySet 调用delete()方法实现删除 3.伪删除操作 通过表里添加一个布尔型字段...删除&获取 获取:request.COOKIES 删除:request.delete_cookie(key) session 会话保持-登录流程 用户登录->账号密码传至后端,服务器数据库验证,正确则发放...,Django接到特征请求后去MEDIA_ROOT路径查找资源 文件写入: 1.open方法 可能出现文件名称重名问题 # 视图函数POST a_file = request.FILES['

9.4K40

Django权限系统auth模块详解

用户没有登录,则会跳转到django默认 登录URL '/accounts/login/ ' (这个值可以settings文件通过LOGIN_URL进行修改)。...一般注册操作中会用到方法,实现注册一个用户,用到函数是User.objects.create_user(),新建用户时候需要判断用户是否存在,实现方式是,User.objects.get(...我们可以通过创建删除Group对象来添加或删除用户组。...auth系统无法提供对象级权限控制, 即检查用户是否对数据表某条记录拥有增改删权限。如果需要对象级权限控制可以使用django-guardian....django.contrib.auth.models.Permission模型中保存了项目中所有权限。 模型在数据库中被保存为auth_permission数据表。

1.5K20

Django内置权限扩展案例

,分别为:add、change、delete,如果给用户或组赋予delete权限,那么用户可以删除这个model下所有数据。...如下代码原来model基础上添加read_groups和write_groups字段,DB实例跟用户组应是ManyToManyField多对多关系,一个实例可以关联多个用户组,一个用户组也可以属于多个实例...:获取登录用户所有组,然后循环查询每个组有读取权限数据库实例,最后把每个组有权限读数据库实例进行合并返回 获取登录用户所有组用到了ManyToMany查询方法:request.user.groups.all...,这里用到了M2Mrelated_name属性:group.read.all() 更多关于Django ORM查询内容可以看这篇文章Django model select各种用法详解有详细总结...执行操作权限控制 除了上边两个场景之外我们还需要在执行具体操作之前去判断是否有权限,例如执行审核操作前判断用户是否对此DB有写权限 有很多地方都需要做这个判断,所以把这个权限判断单独写个方法来处理,

87420

Django 模型继承 BaseModel

你只需要决定父类模型是否需要拥有它们权利(拥有它们数据表),或者父类仅作为承载仅子类可见公共信息载体。 Django 有三种可用集成风格。...从抽象基类继承来字段可被其它字段或值重写,或用 None 删除。 对很多用户来说,这种继承可能就是你想要。它提供了一种 Python 级抽出公共信息方法,但仍会在子类模型创建数据表。...=models.CASCADE, parent_link=True, primary_key=True, ) 你可以 Restaurant 重写字段,通过申明你自己 OneToOneField...然而,你需要时候,这也是可以。 代理继承和未托管模型区别¶ 代理模型继承可能看起来和创建未托管模型很类似,通过模型 Meta 类定义 managed 属性。...通过小心地配置 Meta.db_table,你将创建一个未托管模型模型将对现有模型进行阴影处理,并添加一些 Python 方法

2K10

初探Django框架

Django2. 0可以使用 re_path() 方法来兼容 1.x 版本 url() 方法,一些正则表达式规则也可以通过 re_path() 来实现 Django 模板 想要使用模板那么我们要先在容器下创建一个模板目录...11,22,33也可以切换为一个变量名就行业务处理 语义化标签 先在 py 文件中导入 mark_safe 然后定义标签时,用上 mark_safe 方法,令标签语义化,相当于 jQuery ..., 它可以帮助用户进行数据库连接访问, 同时更重要可以用户不是通过写sql语句查询数据, 而是通过类和对象函数方法完成对数据库操作。...().update(name='Google') 删除数据 删除数据库对象只需调用对象delete()方法即可,示例代码如下: from django.http import HttpResponse...session 唯一可读写属性,代表当前会话字典对象。只有激活Djangosession支持时属性才可用。

2K20

简化 Django 开发八个 Python 包 | Linux 中国

◈   describe_form 输出模型表单定义,可以粘贴到   forms.py 文件。(需要注意是,这种方法创建是普通 Django 表单,而不是模型表单。)...当你需要以下模型时,可以继承这些基类:◈   TimeStampedModel:这个模型基类包含了   created 字段和   modified 字段,还有一个   save() 方法适当场景下...,方法自动更新   created 和   modified 字段值。...就可以通过 env('VARIABLE_NAME') 来获取 .env 文件定义变量值了。  ...API 用户界面按照 app 维度展示了所有端点和可用方法,并列出了这些端点可用操作,而且它提供了和 API 交互功能(比如添加/删除/获取记录)。

2.9K20

django_2

,根据学生找班级名字 显性属性:就是你可以中直接观察到属性---》通过多方获取一方 那么可以使用多方调用显性属性直接获取一方数据 student = Student.objects.get...隐性属性:就是我们类中观察不到,但是可以使用属性---》通过一方获取多方 那么可以使用一方数据隐性属性 获取多方数据 grade = Grade.objects.get(pk=2)...FileField所有属性和方法,但对上传对象进行校验,确保它是个有效image 上两个字段依赖pillow 字段选项 ·概述 ·通过字段选项,可以实现对字段约束 ·字段对象时通过关键字参数指定...自定义模型无法使用 模型增加类方法去创建对象 @classmethod def create(cls,p_name,p_age=100):...,可以实现对字段约束 ·字段对象时通过关键字参数指定 ·null ·如果为True,Django 将空值以NULL 存储到数据库,默认值是 False ·blank

3.6K30

Django数据库操作之save与update使用

使用Django数据模型操作数据库时,了解这些底层SQL操作很有必要。...当你通过表单获取模型数据,但是需要给模型里null=False字段添加一些非表单数据,方法会非常有用。...如果你指定commit=False,那么save方法不会理解将表单数据存储到数据库,而是给你返回一个当前对象。这时你可以添加表单以外额外数据,再一起存储。...我们由Article模型创建了一个ArticleForm表单,可以用户发表新文章,但是我们故意把author字段除外了,因为我们不希望用户编辑作者。...当你同时满足下面两个条件时,你需要使用此方法。如果你直接使用save()或form_valid()方法,是可以直接存储多对多(m2m)关系,不需要用save_m2m。

2.8K10

从0开始做系统

后台管理可以各个appadmin.py文件中进行控制。 假如有个小白,想做个后台系统,如何做,他可以直接用Djangoadmin来弄。...appmodels定义好字段。...verbose_name_plural = verbose_name = "员工信息" # 模型在后台显示名称 Django后台APP名字改为中文 # yourapp/apps.py from django.apps...,列表时,对Date和DateTime类型进行搜索 inlines,详细页面,如果有其他表和当前表做FK,那么详细页面可以进行动态增加和删除 action,列表时,定制action操作 定制HTML...,详细页面时,使用radio显示选项(FK默认使用select) form = ModelForm,用于定制用户请求时候表单验证 可以参考: django admin高级扩展 简单定制了一下: from

1.4K30
领券