新建项目,并开启

  1. python manage.py runserver

访问admin页面

  1. http://127.0.0.1:8080/admin

补充:若是发现admin页面样式丢失:可能是因为在settings文件中的数据格式写错了,比如:

  1. STATICFILES_DIRS 是元组类型,若是在os.path.join(BASE_DIR,'static')后面忘记加上逗号分隔符,则可能会丢失样式,无法找到
  1. STATICFILES_DIRS = (
  2. os.path.join(BASE_DIR,'static'),
  3. )

此时并没有账号和密码:需要先配置数据库,在生成用户

  1. 配置数据库
  2. python manage.py makemigrations
  3. python manage.py migrate
  4.  
  5. 创建用户
  6. python manage.py createsuperuser
  7. 需要填写用户名,邮箱,密码

管理Django数据库的APP--->phpmyadmin,web版管理数据库

创建数据表:

  1. # -*- coding: utf- -*-
  2. from __future__ import unicode_literals
  3.  
  4. from django.db import models
  5.  
  6. # Create your models here.
  7.  
  8. class Publisher(models.Model):
  9. name = models.CharField(max_length=, verbose_name="名称")
  10. address = models.CharField("地址", max_length=)
  11. city = models.CharField('城市', max_length=)
  12. state_province = models.CharField(max_length=)
  13. country = models.CharField(max_length=)
  14. website = models.URLField()
  15.  
  16. class Meta:
  17. verbose_name = '出版商'
  18. verbose_name_plural = verbose_name
  19.  
  20. def __str__(self):
  21. return self.name
  22.  
  23. class Author(models.Model):
  24. name = models.CharField(max_length=)
  25.  
  26. def __str__(self):
  27. return self.name
  28.  
  29. class AuthorDetail(models.Model):
  30. sex = models.BooleanField(max_length=, choices=((, '男'), (, '女'),))
  31. email = models.EmailField()
  32. address = models.CharField(max_length=)
  33. birthday = models.DateField()
  34. author = models.OneToOneField(Author)
  35.  
  36. class Book(models.Model):
  37. title = models.CharField(max_length=)
  38. authors = models.ManyToManyField(Author)
  39. publisher = models.ForeignKey(Publisher)
  40. publication_date = models.DateField()
  41. price = models.DecimalField(max_digits=, decimal_places=, default=)
  42.  
  43. def __str__(self):
  44. return self.title

models.py

  1. python manage.py makemigrations
  2. python manage.py migrate

配置数据库

在admin.py中配置数据库进行管理

  1. from __future__ import unicode_literals
  2.  
  3. from django.contrib import admin
  4. from app01.models import *
  5.  
  6. # Register your models here.
  7.  
  8. admin.site.register(Book)
  9. admin.site.register(Publisher) #会显示设置的verbose_name  在Admin中字段的显示名称
  1. admin.site.register(Author)
  1. python manage.py runserver

启动项目

再次访问

在web页面进行添加:

若是有中文则会出错,解决方法请看:python---补充django中文报错

若是想将页面设置为中文显示,可以设置settings文件:

  1. #LANGUAGE_CODE = 'en-us'
  2. LANGUAGE_CODE = 'zh-hans'

由于在建立orm对象时,__str__中只返回了title,所以页面显示只有书籍名称,其他信息并不全

  1. class Book(models.Model):
  2. title = models.CharField(max_length=)
  3. authors = models.ManyToManyField(Author)
  4. publisher = models.ForeignKey(Publisher)
  5. publication_date = models.DateField()
  6. price = models.DecimalField(max_digits=, decimal_places=, default=)
  7.  
  8. def __str__(self):    #__str__需要返回字符串
        return self.title    

当没有__str__时,只会显示出

要想显示更多信息,需要我们在admin.py模块中自定义类,来设置显示的字段

  1. class MyAdmin(admin.ModelAdmin):
  2. list_display = ("title","price","publisher") #设置显示的字段,与原来__str__无关了
  3.  
  4. admin.site.register(Book,MyAdmin) #使MyAdmin与Book产生联系
  5. admin.site.register(Publisher)
  6. admin.site.register(Author)

可以修改models中的字段,设置别名在admin中显示

  1. class Book(models.Model):
  2. title = models.CharField(max_length=,verbose_name="书名")

搜索框:

  1. class MyAdmin(admin.ModelAdmin):
  2. list_display = ("title","price","publisher") #设置显示的字段,与原来__str__无关了
  3. search_fields = ("title","price",) #会生成搜索框,元组中是允许搜索的字段

过滤器:

  1. class MyAdmin(admin.ModelAdmin):
  2. list_display = ("title","price","publisher") #设置显示的字段,与原来__str__无关了
  3. search_fields = ("title","price",) #会生成搜索框,元组中是允许搜索的字段
  4. list_filter = ("price","publisher")    #生成过滤器,以price过滤

排序:

  1. class MyAdmin(admin.ModelAdmin):
  2. list_display = ("title","price","publisher") #设置显示的字段,与原来__str__无关了
  3. search_fields = ("title","price",) #会生成搜索框,元组中是允许搜索的字段
  4. list_filter = ("price","publisher") #过滤器
  5. ordering = ("-price",) #排序,默认id排序,升序,降序,则使用在字段前使用 '-'
    readonly_fields = []  #设置不允许修改

显示和隐藏:在添加和修改时使用:

  1. fieldsets = [
  2. (None, {'fields': ['title']}), #None代表其他字段隐藏,fields中字段显示
  3. ]

  1. fieldsets = [
  2. (None, {'fields': ['title']}),
  3. ('price information', {'fields': ['price', "publisher"], }), #组名为price information
    ]

  1. fieldsets = [
  2. (None, {'fields': ['title']}),
  3. ('price information', {'fields': ['price', "publisher"], 'classes': ['collapse']}),  #classes样式折叠
  4. ]

python---django中orm的使用(3)admin配置与使用的更多相关文章

  1. Django中ORM介绍和字段及其参数

    ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用描述 ...

  2. Django中ORM介绍和字段及字段参数 Object Relational Mapping(ORM)

    Django中ORM介绍和字段及字段参数   Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简 ...

  3. 关于Django中ORM数据库迁移的配置

    Django中ORM数据库迁移配置 1,若想将模型转为mysql数据库中的表,需要在settings中配置: DATABASES = { 'default': { 'ENGINE': 'django. ...

  4. 6月20日 Django中ORM介绍和字段、字段参数、相关操作

    一.Django中ORM介绍和字段及字段参数 二.Django ORM 常用字段和参数 三.Django ORM执行原生SQL.在Python脚本中调用Django环境.Django终端打印SQL语句 ...

  5. Django 中ORM 的使用

    一:Django 中 orm 的使用 1:手动新建一个数据库 2 :告诉Django连接哪个数据库 settings.py里配置数据库连接信息: #数据库相关的配置项 DATABASES ={ 'de ...

  6. Django中ORM的使用

    Django中ORM的使用 ORM orm(object-relation-mapping)对象关系映射,即用对象来表示关系数据库中的表: 类 --> 表, 对象-->一行数据 对象的属性 ...

  7. Django中ORM对数据库的增删改查

    Django中ORM对数据库数据的增删改查 模板语言 {% for line in press %} {% line.name %} {% endfor %} {% if 条件 %}{% else % ...

  8. Django中ORM实际应用

    1. Django中ORM的使用 1. 手动新建一个数据库 2. 告诉Django连接哪个数据库 settings.py里面配置数据库连接信息: # 数据库相关的配置项 DATABASES = { ' ...

  9. Python Django中QQ邮箱授权码问题

    Python Django中QQ邮箱授权码问题 系统及软件版本如下: Ubuntu Kylin 16.04 Python 3.5.1 Django 1.9.7 PyCharm Community Ed ...

  10. Django中ORM的聚合索引

    Django中ORM的聚合索引   在Django中,聚合函数是通过aggregate方法实现的,aggregate方法返回的结果是一个字典 在使用时需要先导入模块from django.db.mod ...

随机推荐

  1. CS50.3

    1,int()取整函数 2,RPG(role playing game )角色扮演游戏 3,代码写了,要跑,需要compiler (编译器) 4,CLI(command-line interface) ...

  2. 算法练习-002-返回一个set数组

    题目描述: 写一个函数,它的作用是接受一个整数(假设为num),返回一个数组,数组的长度为num, 数组中的内容为随机的0至(num-1)的值,并且不能重复.比如num为5的话,数组可能是[1,0,3 ...

  3. linux 内核 第二周 操作系统是如何工作的

    姬梦馨 原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一:计算机的三个法宝 存储程序计算机工 ...

  4. 作业六:分析Linux内核创建一个新进程的过程

    分析Linux内核创建一个新进程的过程 进程描述符PCB----task_struct数据结构 操作系统:1.进程管理 2.内存管理 3 文件系统 一.新进程如何创建和修改task_struct数据结 ...

  5. 2013337朱荟潼 Linux第一章读书笔记——Linux内核简介

    一.Unix历史 二.Linux足迹 类Linux系统.非商业化产品.用途广泛 三.操作系统和Linux内核简介 1.操作系统 (1)是指在整个最基本功能系统中负责完成最基本功能和系统管理的部分. ( ...

  6. 第二阶段Sprint10

    昨天:查看有关“共享平台”的资料,看如何实现上传下载功能,并尝试编码,没有成功 今天:集合三个人的代码,整合到一起,修复出现的Bug 遇到的问题:看Bug没有出现,但功能不是停止运行就是部分不能用,只 ...

  7. (第三周)使用visual studio 2015进行单元测试

    Microsoft visual studio是目前最流行的windows平台应用程序的集成开发环境.最新版本为 Visual Studio 2015 .Visual Studio 2015 包含许多 ...

  8. final 140字评论I

    1.约跑app:优化了最终界面,设备原因画质不是很清晰,如果能加以改进,能有较多的客户群,适合人群不限于青少年和成年人. 2.礼物挑选:虽然界面不是很清晰,但是整体设计看起来还算舒服,最后阶段又新增了 ...

  9. Linux下利用json-c从一个json数组中提取每一个元素中的部分字段组成一个新json数组

    先把代码贴上来,有时间整理一下 首先说一下要实现的功能: 假定现在有一个json格式的字符串,而且他是一个josn中的数组,比如: [ { "id": "NEW20170 ...

  10. 平时在PHP编码时有没有注意到这些问题

    编出一手好代码,这个是需要你在平时开发中日积月累的,平时如果你有注意到以下的那些代码的编码,那么祝贺你,你在技能提升这方面已经垫下了一些基础,编写出一手好代码,说白了就是你特么注意到性能这块的问题,代 ...