http://zjxplq.iteye.com/admin/blogs/925711
在具体的使用继承来实现admin来实现的记录级的权限控制中又遇到问题了,在使用admin.TabularInline时,就会发现它的save_model()不会调用。
解决方法如下:
from django.contrib import admin
from app.models import *
class AuthorMixin(object):
exclude = ('author',)
def get_model_class(self):
raise NotImplementedError
def queryset(self,request):
if request.user.is_superuser:
return self.get_model_class().objects.all()
return self.get_model_class().objects.filter(author=request.user)
def has_change_permission(self,request,obj=None):
has_class_permission = super(AuthorMixin, self).has_change_permission(request, obj)
if not has_class_permission:
return False
if obj is not None and not request.user.is_superuser and request.user.id != obj.author.id:
return False
return True
def save_model(self,request,obj,form,change):
if not change:
obj.author = request.user
obj.save()
print type(obj)
def save_formset(self, request,form,formset,change):
instances = formset.save(commit=False)
for instance in instances:
instance.author = request.user
instance.save()
class BAdminInline(AuthorMixin,admin.TabularInline):
model = B
def get_model_class(self):
return B
class AAdmin(AuthorMixin,admin.ModelAdmin):
inlines = [BAdminInline,]
def get_model_class(self):
return A
class BAdmin(AuthorMixin,admin.ModelAdmin):
def get_model_class(self):
return B
admin.site.register(A,AAdmin)
admin.site.register(B,BAdmin)
这样的话不管是在ModelAdmin,还是在TabularInline使用都正常实现功能
分享到:
相关推荐
通过以上步骤,你就可以在 `ThinkPHP6.0` 中成功整合 `Hui-Admin` 后台模板,并实现基于 `Auth` 的菜单权限控制。这不仅提高了后台的安全性,还使得管理界面更加有序,提升了用户体验。在实际项目中,你可能还需要...
标题所提到的知识点是关于在Django框架中使用django-guardian扩展包来实现对django-admin管理后台的行级权限控制。在Django中,默认的权限系统提供了基于模型的权限控制,即可以控制哪些用户或用户组能够进行哪些...
在SSH框架中,我们可以在Action类中通过注解或配置文件定义权限控制,如`@Secured("ROLE_ADMIN")`表示只有拥有管理员角色的用户才能访问该方法。 5. **动态权限控制**:权限控制应具备灵活性,允许在运行时动态调整...
在企业级应用中,权限管理是一个至关重要的环节,它涉及到数据安全、用户访问控制以及组织架构的合理划分。本文将详细探讨如何使用Java技术来开发一个高效、灵活且安全的企业级权限管理系统。 首先,理解权限管理的...
通过这种方式,我们能够实现全局的权限控制,无论用户尝试访问哪个页面,都会先经过我们的权限检查。此外,由于HTTP模块的灵活性,我们可以根据需求扩展其功能,比如集成更复杂的授权策略,或者与其他系统(如数据库...
这在日志追踪、权限控制或者审计功能中非常有用。本文将详细介绍如何在Django Admin中实现这一功能。 首先,我们需要在`models.py`文件中定义我们的数据模型。在这个例子中,我们有一个名为`Setting`的模型,其中...
总结来说,CDH 6.3.1中的Ranger 2.1.0-admin是实现大数据平台安全策略的核心工具,它提供了强大的权限管理、审计跟踪以及与多种服务的集成能力。对于任何希望确保数据安全的企业,理解和掌握Ranger的使用是至关重要...
4. **用户权限组中间表 (admin_privilegegroup)**:记录用户与权限组的多对多关系,以此实现权限的分配。 此外,还设计了一个名为`Privilege`的权限类,利用Java 5.0的注解特性,标记需要进行权限过滤的方法,并...
在C# WinForm应用开发中,权限管理是一个关键部分,涉及到用户访问控制和安全策略的实施。本篇文章将深入探讨C# WinForm中如何处理权限问题,包括登录权限的实现和功能权限的详细讲解。 首先,让我们理解登录权限。...
5. **权限控制**:集成 Laravel 的 Gate 和 Policy 机制,实现角色和权限的分配,便于实现细粒度的访问控制。 6. **自定义扩展**:允许开发者创建自定义控制器、模型、视图和中间件,满足特定业务需求。 **三、...
- **授权与认证**: 支持 JWT(JSON Web Tokens)或 Laravel 的内置 Gate 和 Policy 机制,实现用户身份验证和权限控制。 - **API 响应格式化**: 可配置的响应格式,如 JSON,便于前端处理。 - **错误处理**: 统一的...
通过这种方式,系统可以在运行时根据用户的请求动态加载XML文件中的权限信息,并从数据库中获取具体用户的权限设置,从而实现对用户请求的有效控制。 #### 实际应用案例 本文还提到了一个具体的实例,即在现有系统...
2. 权限控制:通过RBAC(Role-Based Access Control)角色权限控制机制,实现了用户角色与权限的灵活配置。 3. 数据管理:提供数据的导入导出、备份恢复功能,确保数据的安全和便捷管理。 4. 日志记录:系统会记录...
4. **Blade模板引擎**:Blade是Laravel内置的轻量级模板引擎,它支持条件语句、循环、包含、继承等,使视图的创建更加简单。 5. **Artisan命令行工具**:Artisan提供了许多内置命令,如迁移(migrations)、生成...
2. 管理员权限控制:Dcat Admin支持多级菜单和角色权限分配,可以通过简单的配置实现对后台资源的精细控制。 3. CRUD操作:通过Dcat Admin的Grid和Form组件,可以快速创建数据展示、编辑、删除等功能,极大地减少了...
在 Laractive Admin 中,中间件可能被用来实现登录验证和权限控制。 6. **表单验证**:Laravel 提供了内置的表单验证机制,可以在控制器中定义验证规则,轻松处理客户端和服务器端的验证。 7. **Blade 模板引擎**...
### Windows 8系统文件夹权限设置详解 #### 一、前言 在Windows 8操作系统中,文件夹和文件的权限管理是确保数据安全的重要...通过以上步骤,您可以有效地管理Windows 8中的文件夹权限,从而更好地保护您的数据安全。
在简单的应用场景下,可以通过判断用户是否登录来实现基本的权限控制。例如,在PHP中可以使用以下代码片段: ```php if ($isLogin === true) { // 执行某些操作 } else { // 不执行任何操作 } ``` 这里 `$...
对于更复杂的权限控制,可以考虑使用 Laravel 的包如 `spatie/laravel-permission` 来实现角色和权限管理。安装后,你可以为管理员分配角色,每个角色具有不同的权限。 ```bash composer require spatie/laravel-...
10. 权限继承(Privilege Inheritance):用户通过角色获得的权限可以在他们创建的对象上使用,即使这些权限没有直接授予他们。 11. PUBLIC角色:Oracle中的PUBLIC角色对所有用户开放,向PUBLIC授予的权限将对所有...