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

Django学习笔记4

阅读更多

上一个笔记写了如何添加一个应用,现在来说明如何给这个应用添加一个后台管理模块。

首先需要在应用的根目录底下新建一个admin.py的类。


#! /usr/bin/python
# -*- coding:utf-8 -*-
'''
Created on 2011-3-12

@author: ezioruan
'''
from django.contrib import admin
from DjangoTest.orders.models import Order,OrderDetail


class OrderDetailLine(admin.StackedInline):
    model = OrderDetail
class OrderDetailLine2(admin.TabularInline):
    model = OrderDetail

class OrderAdmin(admin.ModelAdmin):
#    fields = ['order_date', 'order_creater']
    fieldsets = [
                 ('order date',{'fields':['order_date']}),
                 ('created by ',{'fields':['order_creater'],'classes':['collapse']}),
                  # 因为 is_order_today 是通过property方法进行赋值的,所有没有办法在django里面加载  
#                 ('is ordey today ',{'fields':['is_order_today']}),
                ]
    list_display = ['order_creater','is_order_today']
    list_filter = ['order_date']
    inlines = [OrderDetailLine,OrderDetailLine2]
    
#    readonly_fields = ['order_creater']

admin.site.register(Order, OrderAdmin);


 这样在后台的时候,会在界面中载入这个类的管理,

 

admin.site.register(Order, OrderAdmin);


将一个类添加到后台管理,这样就可以使用默认的管理员模板来进行管理了。

这个方法的参数,第一个是要进行管理的类,第2个是管理类。

如果只是第一个参数,那么就会使用默认的模板进行管理,

第2个参数是自己实现的类,可以进行定制管理。

 

#    fields = ['order_date', 'order_creater']


fields属性定义要进行管理的字段,

也可以用fieldset进行管理,就是针对每个字段进行定制

 

    fieldsets = [
                 ('order date',{'fields':['order_date']}),
                 ('created by ',{'fields':['order_creater'],'classes':['collapse']}),
                  # 因为 is_order_today 是通过property方法进行赋值的,所有没有办法在django里面加载  
#                 ('is ordey today ',{'fields':['is_order_today']}),
                ]

这边的第一个参数是tab页的标题,还可以设置class属性,

然后我查看源码的时候发现了一个函数,发现它的fieldset是通过一个property函数进行设置的

 def _declared_fieldsets(self):
        if self.fieldsets:
            return self.fieldsets
        elif self.fields:
            return [(None, {'fields': self.fields})]
        return None
    declared_fieldsets = property(_declared_fieldsets)

 仔细查了一下这个的用法,发现property就是进行一系列get set del方法的设置

2.1 Built-in Functions 
property( [fget[, fset[, fdel[, doc]]]])

Return a property attribute for new-style classes (classes that derive from object). 
fget is a function for getting an attribute value, likewise fset is a function for setting, and fdel a function for del'ing, an attribute. Typical use is to define a managed attribute x:

 

class C(object):
    
def __init__(self): self._x = None
    
def getx(self): return self._x
    
def setx(self, value): self._x = value
    
def delx(self): del self._x
    x 
= property(getx, setx, delx, "I'm the 'x' property.")

If given, doc will be the docstring of the property attribute. Otherwise, the property will copy fget's docstring (if it exists). This makes it possible to create read-only properties easily using property() as a decorator:

大概含义是,如果要使用property函数,首先定义class的时候必须是object的子类。通过property的定义,当获取成员x的值时,就会调用getx函数,当给成员x赋值时,就会调用setx函数,当删除x时,就会调用delx函数。使用属性的好处就是因为在调用函数,可以做一些检查。如果没有严格的要求,直接使用实例属性可能更方便。

所以我就做了个实验,在我的类中加了一个属性和方法,但是发现这样子做以后不能在django的后台进行管理了,会提示没有这个属性,

 def _is_order_today(self):
        return self.order_date.date() == datetime.date.today()
    def set_order_date(self,order_date):
        self.order_date = order_date
    is_order_today = property(_is_order_today,set_order_date)
    

进行debug,发现是每个属性都要是models里面的属性才可以,这样才能和数据库映射起来

主从表的管理,可以在这边设置inlines属性,加入子表的管理模式。

这边用了2种不同的风格进行管理,但是发现保存的时候,要是2种同时修改的话,只会保存后面的一个。

 

 

 

分享到:
评论
1 楼 twz915 2014-10-11  

相关推荐

    Django学习笔记

    个人总结的Django学习笔记, 持续更新中。 目前只是总结了django的一部分学习逻辑。

    Django学习笔记.pdf

    4. 管理界面:Django自带一个功能丰富的后台管理界面,通过简单的配置,开发者就可以得到一个功能完整的后台管理页面,非常适合进行内容管理或者数据录入的工作。 5. 中间件:中间件是一些可以插拔的框架扩展,它...

    Django框架学习笔记

    ### Django框架学习笔记 #### 软件框架概述 软件框架是软件开发中的一种结构化设计,它提供了一种组织代码、数据和其他资源的方式,使得开发者可以更容易地构建应用程序。框架通常包含了一些预设的解决方案,这些...

    Django学习笔记.zip

    这个名为"Django学习笔记.zip"的压缩包文件显然包含了关于Django框架深入学习的各种资料,涵盖了从基础到进阶的主题。让我们逐一探讨这些主题。 1. **Django安装**:Django的安装通常通过Python的包管理器pip完成。...

    Django学习笔记.docx

    Django学习笔记 本文档是 Django 学习笔记,基于 b 站千锋教育的视频课程,涵盖了 Django 的基础知识和应用实践。 知识点一:Django 项目结构 * 项目结构:manage.py、__init__.py、settings.py、urls.py、wsgi....

    django学习笔记

    **Django学习笔记** Django,作为Python领域最流行的Web框架之一,因其高效、安全且易于上手的特点,被广大开发者所青睐。本学习笔记旨在深入解析Django的核心概念、功能以及实际应用,帮助读者从零开始掌握这个...

    Django学习笔记.doc文件.rar

    在本压缩包中,"Django学习笔记.doc文件.rar"包含了一份详尽的Django框架学习资料,由以下几个部分组成: 1. **用户身份验证.doc**:这部分讲述了Django内置的身份验证系统,包括如何创建用户账户,登录和登出功能...

    django笔记 django笔记

    本笔记将深入探讨Django的基础概念、核心功能以及实际应用。 1. **Django简介**: Django是由两位美国开发者在2005年创建的开源项目,它遵循MVC(模型-视图-控制器)设计模式,但更倾向于MTV(模型-模板-视图)...

    Django学习笔记详情

    python Django学习资料详情笔记

    Django学习笔记月伴之夜.

    在`Django学习笔记月伴之夜.py`中,可能会看到如下的模型定义: ```python from django.db import models class Article(models.Model): title = models.CharField(max_length=200) content = models....

    django学习笔记,用typora软件打开

    django学习笔记,用typora软件打开

    Django学习笔记--阉割版

    Django学习笔记--阉割版 Django是Python下的一个免费开源的Web应用框架,使用它可以快速构建可维护、可扩展、灵活的网站。下面是 Django 学习笔记的总结,涵盖了 Django 的安装、项目结构、应用程序、视图、模型、...

    django框架学习笔记

    【描述】:“django学习” 在Python的世界里,Django是一个强大且受欢迎的Web框架,它遵循模型-视图-控制器(MVC)设计模式,用于快速开发高效且可维护的网站。Django强调代码复用,提供了丰富的内置功能,如ORM...

    python+django学习笔记

    在"python-month3-master"这个文件夹中,可能包含了作者在第三个月学习Python和Django过程中积累的笔记和项目。这可能包括了对Python高级特性的探讨,如装饰器、生成器、上下文管理器,以及Django中的复杂应用场景,...

    django学习笔记,共15章+sql操作命令

    **Django学习笔记** Django,作为Python编程语言中的一个强大Web框架,是开发者们构建高效、可扩展网站的首选工具。这篇学习笔记涵盖了从基础到高级的Django知识,旨在帮助初学者快速掌握这个框架,并提升有经验的...

    PythonDjango学习笔记Python简单运用(二).docx

    Python Django 学习笔记主要关注的是Python的基本使用和Django框架的应用。首先,文档介绍了Python的基础操作,包括如何启动IDLE(Python GUI)并打印出"Hello World"。在Python中,`print`语句是用于输出信息到控制台...

Global site tag (gtag.js) - Google Analytics