`
san_yun
  • 浏览: 2663765 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

django manage

 
阅读更多

管理器(manage)是提供给 Django 应用程序的数据库查询操作的接口. Django 应用程序中的每个 model 至少有一个管理器对象.

Django 默认自动给每个 model 添加一个名为 objects 的管理器.不过如果你需要用 objects 作为一个字段名的话, 或者你不愿意使用 objects 这个名字, 也允许为 model 指定自定义名字. 若在 model 中定义一个 models.Manager() 类型的属性, 则该属性就是管理器对象:

from django.db import models

class Person(models.Model):

      ... people = models.Manager() 
 


在这个例子里, Person.objects.all() 会引发异常,而 Person.people.all() 会提供一个所有 Person 对象。

Book.objects.all()中objetcs就是一个Manager的例子。那么什么时候需要定制自己的manager呢?

 

假如对于Person.objects.get()我们想先通过memcached get数据,如果cache里面有没有,再从数据库里面查询数据那么可以定制person的manage:

 

class CacheBaseManager(models.Manager): 
     def get(self, *arg, **kwargs):
        id = kwargs.get("id", 0)
        uid = kwargs.get("user__id", 0) or kwargs.get("user__id__exact", 0)
        key = id and cf.generate_cache_key(id, self.model) or \
            uid and cf.generate_cache_key("uid:%s" % uid, self.model)
        model = key and cache.get(key)
        # 通过id查询先从缓存里面获取
        if not model:
            model =  super(CacheBaseManager, self).get(*arg, **kwargs)
            cache.set(key, model, 60*60)
        else:
            if dir(self.model()) != dir(model):
                model =  super(CacheBaseManager, self).get(*arg, **kwargs)
                cache.set(key, model, 60*60)
            logging.debug("cache hit >> [%s]" % key)
            
        return model
 
分享到:
评论

相关推荐

    django manage.py扩展自定义命令方法

    # django manage.py扩展自定义命令 环境: mac django1.10.3 在实际的项目开发过程中,我们可能要执行某脚本初始化数据库,可能要启动多个服务,比如启动celery,redis等。要是直接执行python mange.py celery/...

    详解Python的Django框架中manage命令的使用与扩展

    【Python Django框架中的manage命令详解】 在Python的Django框架中,`manage.py`是一个非常重要的工具,它提供了一个命令行接口,允许开发者执行各种管理任务,如创建数据库模式、运行服务器、执行数据迁移等。`...

    运行django项目指定IP和端口的方法

    一、django项目启动命令 默认IP和端口 python manage.py runserver 指定端口 python manage.py runserver 192.168.1.50:8080 二、遇到的问题 Invalid ...

    django笔记 django笔记

    设置项目时,使用`django-admin startproject project_name`创建新项目,然后通过`python manage.py startapp app_name`创建应用。 3. **模型(Models)**: 模型是Django中数据的抽象,定义了数据库表的结构。在...

    Python+Django 官网例子

    最后,启动Django开发服务器,`python manage.py runserver`,然后在浏览器中访问`http://127.0.0.1:8000/myapp/user_list/`,你应该能看到用户列表。 通过这个"FirstProgram"的例子,我们学习了Django的基本工作...

    Django入门新闻管理系统

    Django入门新闻管理系统。入门的,新手可以看下哈。。。 ================================================== Django的环境: Python的安装: python-2.7.1.msi Django的安装: 去djangoproject.com下载最新的版本...

    Python——django入门教程PPT课件.pptx

    python manage.py runserver ``` 打开浏览器,访问 http://127.0.0.1:8000/,你将看到 Django 的欢迎页面。 这篇文章详细介绍了 Django 开发框架的基本概念、设计哲学、设计模式、环境搭建和第一个 Django 应用。

    django python3 实例下载

    当你创建了一个新的模型,并执行`python manage.py makemigrations`和`python manage.py migrate`命令后,Django会自动生成相应的SQL来创建这些表。`django.sql`可能包含了手动创建或迁移数据库结构的SQL脚本。 4. ...

    Django框架基础教程(一):简单介绍PythonDjango框架.pdf

    - **新建APP**:`python manage.py startapp app-name` 或 `django-admin.py startapp app-name` - **启动服务器**:`python manage.py runserver 0.0.0.0:8000` 或 `python manage.py runserver` 5. 视图与URL:...

    Django实战入门项目.rar

    2. **Django项目创建**:使用`django-admin startproject`命令创建项目,理解项目目录结构,包括manage.py、settings.py、urls.py、wsgi.py等文件的作用。 3. **Django应用创建**:在项目中创建应用,比如`python ...

    django-pdb, 提供 `manage.py runserver pdb` 和 `manage.py test pdb`.zip

    django-pdb, 提供 `manage.py runserver pdb` 和 `manage.py test pdb` Django PDB 使调试 Django 容易每次想闯入pdb时都将 pdb.set_trace() 添加到源文件中。这样 不行. 这样做。安装使用pip安装:pip install ...

    Django课件与代码

    最后,Django的开发服务器和管理命令行工具(如python manage.py runserver和python manage.py shell)也是学习的重点。它们让你能够快速测试和调试应用,而无需复杂的部署配置。 总的来说,“Django课件与代码”将...

    Django常用DOS命令

    除此之外,Django的`manage.py`还有很多其他有用的命令,如`sqlmigrate`(查看迁移的SQL语句)、`test`(运行应用的单元测试)、`collectstatic`(收集静态文件)等。如果忘记了具体的命令,可以通过`python manage....

    superdjangoadmin:Django admin的一些附加组件可帮助简化非程序员人员的生活:对于Django Internship

    Django-Admin扩展该应用程序为...4.每天的用户(漂亮的条形图)安装说明克隆仓库运行pip install requirements.txt 使用django manage.py makemigrations进行迁移和迁移运行虚拟服务器导航到管理路由并使用默认凭据登录

    Practical django Projects 实战Django

    python manage.py startapp blog ``` #### 五、模型设计 在Django中,模型是用来描述数据库表结构的关键部分。针对上述需求,我们可以定义以下模型: 1. **User**:继承自Django内置的`AbstractUser`类,用于...

    django基础教程

    Django的数据库迁移工具`manage.py makemigrations`和`manage.py migrate`使得数据库结构的变更变得简单,无需手动编写SQL。 十一、部署与性能优化 Django项目可以部署在各种Web服务器上,如Apache、Nginx等。通过...

    基于Django的网站平台系统源码

    - `manage.py`:Django项目的命令行入口,用于启动服务器、迁移数据库等操作。 - `DepartmentSystem`:项目主目录,包含`settings.py`、`urls.py`、`wsgi.py`等核心配置文件。 - `apps`:包含各个应用(模块)的目录...

    Django的资产管理系统源码

    9. `manage.py`:Django提供的命令行工具,用于执行各种管理任务,如迁移数据库、运行服务器等。 在学习这个项目时,你可以关注以下几个关键点: - 如何使用Django模型来定义数据结构和业务规则。 - Django视图如何...

    Django企业开发实战.源码

    1. **Django项目结构**:理解Django项目的标准布局,包括`manage.py`、`settings.py`、`urls.py`、`wsgi.py`等关键文件的作用。 2. **模型设计**:通过分析`models.py`,学习如何定义数据模型,如何使用字段类型、...

Global site tag (gtag.js) - Google Analytics