http://bio.rusaer.com/archives/280

之前搭建环境是为了更好的进行编辑,现在就进行数据的建模

1,在django里,创建数据结构相对来说十分简单,就是在创建的app网站文件夹下的models.py中定义,这里我就以简单的blog程序来做解释:models.py

from django.db import models

#导入数据库模块

class Reporter(models.Model):

#定义一个表格

full_name = models.CharField(max_length=70)

#字段名,即表头。定义为单行

def __unicode__(self):

return self.full_name

class Article(models.Model):

pub_date = models.DateTimeField()

headline = models.CharField(max_length=200)

#上下都类同

article = models.TextField()

#这个textfield就是多行,编辑文章内容用,调用编辑器也是这个

reporter = models.ForeignKey(Reporter)

#外键

def __unicode__(self):

return self.headline

# 还有好多函数,都是可以使用的,如URLField EmailField 可以参考手册

2,添加app到setting.py


选中部分就是添加的app

3,创建数据表

首先,现校验一下模型的有效性,cd转到工程目录,运行

python manage.py validate

validate 命令检查你的模型的语法和逻辑是否正确。如果一切正常,你会看到 0 errors found 消息。如果有问题,它会给出非常有用的错误信息来帮助你修正你的模型。然后再运行

python manage.py sqlall blog

sqlall 命令并没有在数据库中真正创建数据表,只是把 SQL 语句段打印出来。你可以把这些语句段拷贝到你的 SQL 客户端去执行它。

当然,Django 提供了更简单的方法来执行这些 SQL 语句。运行 syncdb 命令:

python manage.py syncdb

这样数据就创建成功了。

4,基本数据访问

python manage.py shell

>>>from blog.models import * #创建对象,import模型,传入值将其实例化

>>>p1 = Article(pub_date = ’2010/04/15′, headline=’it is a example’, article = ‘article text’, reporter = ‘admin’ )

>>>p1.save() #调用该对象的save()方法,将对象保存到数据库中,django会在后台执行insert语句。

>>>article_list = Article.objects.all() # 使用树形objects从数据库中获取对象,objects.all调用所有对象,django会在后台执行一条select sql语句。

>>>article_list

[<headline: it is a example>] #返回值,因为models.py里用return self.headline返回headline的值

数据过滤

如果想活的数据的一个子集,可以用fliter()方法:

>>>Article.object.fliter(headline=”it is a example”)

[<headline: it is a example>]

如果后面添加多个参数,则相当与sql语句中的and

>>>Article.object.fliter(headline=”it is a example”, id=1)

[<headline: it is a example>]

注意,这些操作字符都是精确匹配的,如果sql中的like %example% , 则可以用

>>>Article.object.fliter(headline__contains=”example”)

[<headline: it is a example>]

还有很多如icontains, startswith, endswith, range(sql between 查询)等,可以查看手册。

获取单个对象

如果想获取单个对象,这个时候用get()方法

>>>Article.object.get(headline=”it is a example”)

[<headline: it is a example>]

数据排序

>>>Article.object.order_by(“pub_date”)

多字段排序

>>>Article.object.order_by(“pub_date”,”headline”)

还可以进行逆向排序,在前面加一个减号-前缀

>>>Article.object.order_by(“-pub_date”)

定义缺省排序方式,

Django 使用内部类 Meta 存放用于附加描述该模型的元数据。 这个类完全可以不实现,不过他能做很多非常有用的事情

综合使用

>>>Article.object.fliter(headline__contain=”it”).order_by(“pub_date”)

限制返回的数据

>>>Article.object.all()[0]

删除对象

>>>p = Article.objects.get(id=2)

>>>p.delete()

批量删除,获取查询结果,实例化

>>>p = Article.objects.all()

>>>p.delete()

[]

5,自定义管理界面

老版本的django是直接在models.py的么个模块下自定义,新版本的则是在每个app下新建一个admin.py文件

如我的blog目录下的admin.py:

from django.contrib import admin

#导入共用的admin模块

from sites.blog.models import Reporter, Article

#导入需要进行管理的模块

from django.conf import settings

#导入设置文件

class ReporterAdmin(admin.ModelAdmin):

#定义Reporter的管理方式

list_display = (‘full_name’,)

#列表显示的内容

search_fields = (‘full_name’,)

#添加一个搜索框,以full_name为变量搜索

class ArticleAdmin(admin.ModelAdmin):

list_display = (‘pub_date’, ‘headline’, ‘article’,'reporter’)

date_hierarchy = ‘pub_date’

ordering = (‘-pub_date’,)

#按时间倒序排列

raw_id_fields = (‘reporter’,)

class Media:

js = (settings.MEDIA_ROOT+’js/tiny_mce/tiny_mce_src.js’, settings.MEDIA_ROOT+"filebrowser/js/TinyMCEAdmin.js",)

#定义textarea的js,即添加可视化编辑器

admin.site.register(Article, ArticleAdmin)

admin.site.register(Reporter, ReporterAdmin)

django数据库处理相关推荐

  1. Django从理论到实战(part31)--Django数据库查询操作

    学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y: Django数据库查询操作 查找是数据库操作中一个非常重要的技术,查询一般就是使用filter.exclude以及get三个 ...

  2. 067:【Django数据库】ORM查询条件详解-range

    [Django数据库]ORM查询条件详解-range range: 判断某个 field 的值是否在给定的区间中.示例代码如下: # views.py文件内容:from datetime import ...

  3. 【转】Django 数据库的操作

    2019独角兽企业重金招聘Python工程师标准>>> Django 紧紧地遵循这种 MVC 模式,可以称得上是一种 MVC 框架.以下是 Django 中 M.V 和 C 各自的含 ...

  4. Python+Django数据库配置及使用——执行原始SQL并返回模型实例

    开发环境 OS:Windows Server 2012 Python:2.7.5 Django:1.5.2 通过 settings.py 配置数据库 参见:Python+Django数据库配置及使用- ...

  5. Django创建数据库(Django数据库字段类型)

    创建默认数据库 项目中数据库的配置在 你的项目/settings.py 中 DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3 ...

  6. Django-- (三) Django数据库操作

    1.Django数据库 Django 非常适合构建数据库驱动型网站,它提供了简单而强大的工具(ORM),易于使用 Python 执行数据库查询. 2.ORM介绍 Object Relational M ...

  7. Django数据库操作查询

    文章目录 Django数据库操纵查询 F和Q对象: 1.F对象: 2.Q对象: 2.聚合函数和排序函数 1.聚合函数: 2.排序函数: 3.级联查询: 1.关联查询 关联过滤查询 4.查询集 **查询 ...

  8. Django数据库orm操作以list形式获取数据库中某列所有值

    文章目录 问题: 解决办法: 方式一: 方式二: 方式三: 写在最后 问题: 如图所示,Django数据库中存储如下字段. 这是在前端渲染出的数据.现在的需求是:要把factory这一列数据从后端数据 ...

  9. django数据库迁移需注意的问题

    django迁移 django迁移就是在django的models.py中创建数据库表,有django自己规定的数据库操作语法. 直接使用SQL非常麻烦,Django附带了一个对象关系映射器,简称OR ...

  10. Django数据库基本配置

    Django数据库基本配置 1.首先修改Settings中数据库配置 2.在app中的__init__添加代码(或者在django_site中的init文件) 3.创建数据表(在app的model.p ...

最新文章

  1. C# 创建控制台应用程序
  2. C# 5.0中引入了async 和 await
  3. 单招计算机专业综合测试,单招计算机专业模习题.doc
  4. Linux中Shell的命令替换用法笔记
  5. Teams与OneDrive for Business和SharePoint的关系
  6. php 页面加载进度条,HTML5/CSS3 网页加载进度条的实现,下载进度条等经典案例
  7. r语言 xmlto html,使用R语言将XML转换为CSV(示例代码)
  8. 【架构师培训课程-技术基础课】
  9. Bootstrap 按钮状态提示
  10. Nginx之gzip压缩配置
  11. 物联网卡得持续增长对企业带来怎样的挑战
  12. session 过期怎么办
  13. new一个对象的过程发生了什么
  14. GitHub上的那些LGTM和WIP代表什么
  15. 【第四章-2】Python爬虫教程(协程,多任务异步协程,aiohttp模块,异步爬虫实战:爬取《西游记》全部章节内容)
  16. 镶锆石、侧边指纹、双屏翻盖机,三星的这款2万块手机,只有土豪能懂
  17. SOFA Weekly | SOFAJRaft 发布、SOFAJRaft 源码解析文章合集
  18. AGV控制系统的6大优势介绍
  19. CDA数据分析师3个级别的薪资待遇|人才认证标准
  20. 什么是GP、LP、VC、PE、FOF

热门文章

  1. Java-访问修饰符
  2. mixpanel实验教程(2)
  3. php curl 及其参数
  4. 用三层交换机实现大中型企业VLAN
  5. 上海,不算太郁闷的地方
  6. RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility.
  7. 40vf什么意思_LED 的基本术语VF、IV、WL、IR 解释及光通量换算关系
  8. PyTorch学习笔记(五):模型定义、修改、保存
  9. 大数据分析的意义在哪
  10. 大数据平台应用开发的痛点有哪些