`
hanyh
  • 浏览: 235269 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

扩展Django的Group

阅读更多
参见了:http://www.iteye.com/topic/341893
想把内置的Group当作部门来用,增加两个部门电话和email字段,如下
class ProfileGroupBase(type):
    def __new__(cls, name, bases, attrs):
        module = attrs.pop('__module__')
        parents = [b for b in bases if isinstance(b, ProfileGroupBase)]
        if parents:
            fields = []
            for obj_name, obj in attrs.items():
                if isinstance(obj, models.Field): fields.append(obj_name)
                Group.add_to_class(obj_name, obj)
           # GroupAdmin.fieldsets = list(GroupAdmin.fieldsets)fieldssets为空
           # GroupAdmin.fieldsets.append((name, {'fields': fields}))
        return super(ProfileGroupBase, cls).__new__(cls, name, bases, attrs)

class ProfileGroup(object):
    __metaclass__ = ProfileGroupBase

class Dep(ProfileGroup):
    mobile = models.CharField(max_length = 15)
    email = models.CharField(max_length = 15)


syncdb后auth_group表就有对应的字段了。不影响以前的使用和逻辑。
注:
1,type是python中得metaclass
metaclass 1),在设计时不知道一个class究竟要作什么,需要动态添加
          2),运行时要根据情况而生成新的class

2,使用__new__而不是__init__,new才是分配对象内存
分享到:
评论
2 楼 cougarwww 2009-07-20  
举一反三呵呵,厉害好
1 楼 范三山 2009-06-02  
这个有点意思

相关推荐

    我写的Django OpenGroup系统,也放在了python-cn

    【标题】"我写的Django OpenGroup系统"指的是一个基于Python的Django框架构建的开源社区平台。Django是Python Web开发的一个强大框架,它强调可重用性和“开箱即用”的功能,使得开发者能够快速高效地创建复杂的Web...

    django1.3官方文档英文html版

    理解User模型、Group模型以及如何使用装饰器或检查器进行权限控制。 8. **中间件**:中间件是Django中一种全局的响应和请求处理机制。了解何时及如何编写自定义中间件以扩展框架功能。 9. **缓存系统**:Django的...

    django-rest-framework-cn

    ### Django REST Framework 知识点解析 #### 一、简介 Django REST Framework...综上所述,Django REST Framework不仅提供了强大的功能支持,而且通过高度可配置性和扩展性使得开发者能够快速构建高质量的Web API。

    Python+Django+VUE后台管理系统

    综上所述,这个后台管理系统融合了 Python Django 的强大后端功能与 Vue.js 的高效前端渲染,通过 RESTful API 实现前后端分离,实现了用户管理与用户组管理的增删改查功能,具备良好的可扩展性和可维护性。...

    django与websocket创建简易聊天室

    首先,我们需要确保已安装了Django和Django Channels,后者是Django处理WebSocket请求的扩展。你可以通过Python的pip工具进行安装: ```bash pip install django pip install channels ``` 接下来,我们来配置...

    Python+django+channels实现websocket

    Channels是Django的一个扩展,允许我们处理非HTTP协议,如WebSocket。在Django 2.0+版本中,Channels已经作为一个独立的库存在,使得Django能够处理异步请求,这在构建实时应用时非常有用。 WebSocket协议是一种在...

    CentOS7下部署Django项目详细操作步骤1231313213.zip

    Django是Python最流行的Web框架之一,以其高效、可扩展和安全的特性受到开发者的喜爱。为了确保项目的顺利部署,我们将遵循一系列详细步骤,这些步骤将涵盖环境配置、Django安装、数据库设置、Nginx反向代理以及...

    django_group_project

    【标题】"django_group_project" 是一个基于 Django 框架构建的团队协作项目,它可能包含了一系列用于创建和管理用户组、分配权限以及实现协同工作的功能和组件。Django 是一个高级的 Python Web 开发框架,它鼓励...

    Django学习2-用户管理系统课件

    5. 权限和组:Django的`Group`模型允许我们将用户分组,并为每个组分配一系列的权限。权限控制了用户可以执行的操作,如查看、更改或删除数据。 6. 自定义注册流程:虽然Django提供默认的注册视图,但在实际项目中...

    Python库 | django-is-core-2.14.1.tar.gz

    - **设置角色和权限**:通过`django.contrib.auth.models.Group`和`Permission`对象,可以创建角色并分配权限。 - **API集成**:在视图中使用`@api_view`装饰器,结合`serializers`和`permissions`实现API接口。 ...

    Django 内置权限扩展案例详解

    本案例中,我们将探讨如何扩展Django的内置权限系统,以实现对数据库实例的细粒度访问控制。 首先,我们来看背景介绍。原本的权限系统是基于功能划分的,例如用户A有审核权限,那么A可以审核所有数据库。但随着系统...

    django channels实战(websocket底层原理和案例)

    Django Channels是Django框架的一个扩展,它允许我们处理非HTTP协议的通信,如WebSocket,从而实现了实时双向通信。理解WebSocket的底层工作原理和如何在Django Channels中运用,对于开发现代Web应用程序至关重要。 ...

    python学习 - Python3+Django2配置后台管理实操案例分析

    在实际开发中,我们可能还需要创建自定义的视图和模板来处理特定的管理任务,或者扩展Django的后台样式。`itstyle`可能是指用于定制后台界面样式的资源文件,如CSS、JavaScript等。可以将这些文件放入项目的静态...

    对django的User模型和四种扩展/重写方法小结

    【Django User模型详解与扩展方法】 Django的User模型是其身份认证系统的核心,它位于`django.contrib.auth.models.User`。User模型包含了处理用户账户所需的基本信息和属性,如下所述: 1. **字段**: - `...

    10. Django Auth认证系统

    然而,有时默认的用户模型可能无法满足特定项目的需求,这时可以通过自定义用户模型来扩展或修改用户信息。 **2. 自定义User模型** 要自定义User模型,你需要创建一个新的模型并继承自`AbstractBaseUser`或者`...

    django-websocket.rar

    对于初学者来说,这是一个很好的起点,你可以在此基础上扩展功能,比如实现用户身份验证、多房间聊天、存储历史消息等功能。随着你对Django和WebSocket的深入理解,你将能够构建更复杂、功能更丰富的实时Web应用。

    用Django开发Depot购物车应用iteration5代码

    对于权限管理,可以使用内置的Group和UserPermissions系统,或者扩展自定义的权限模型。 8. 库与扩展: 在"Depot"应用开发过程中,可能会用到第三方库,比如用于支付处理的Stripe、PayPal API,或者用于邮件发送的...

    基于python-Django从0创建一个博客系统.zip

    【Python-Django博客系统开发详解】 在计算机科学与技术领域,毕业设计是学生们展示技能、理解和...在实际项目中,还可以扩展功能,如增加社交分享、SEO优化、评论举报等功能,进一步提升博客系统的用户体验和实用性。

Global site tag (gtag.js) - Google Analytics