django数据库处理
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数据库处理相关推荐
- Django从理论到实战(part31)--Django数据库查询操作
学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y: Django数据库查询操作 查找是数据库操作中一个非常重要的技术,查询一般就是使用filter.exclude以及get三个 ...
- 067:【Django数据库】ORM查询条件详解-range
[Django数据库]ORM查询条件详解-range range: 判断某个 field 的值是否在给定的区间中.示例代码如下: # views.py文件内容:from datetime import ...
- 【转】Django 数据库的操作
2019独角兽企业重金招聘Python工程师标准>>> Django 紧紧地遵循这种 MVC 模式,可以称得上是一种 MVC 框架.以下是 Django 中 M.V 和 C 各自的含 ...
- Python+Django数据库配置及使用——执行原始SQL并返回模型实例
开发环境 OS:Windows Server 2012 Python:2.7.5 Django:1.5.2 通过 settings.py 配置数据库 参见:Python+Django数据库配置及使用- ...
- Django创建数据库(Django数据库字段类型)
创建默认数据库 项目中数据库的配置在 你的项目/settings.py 中 DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3 ...
- Django-- (三) Django数据库操作
1.Django数据库 Django 非常适合构建数据库驱动型网站,它提供了简单而强大的工具(ORM),易于使用 Python 执行数据库查询. 2.ORM介绍 Object Relational M ...
- Django数据库操作查询
文章目录 Django数据库操纵查询 F和Q对象: 1.F对象: 2.Q对象: 2.聚合函数和排序函数 1.聚合函数: 2.排序函数: 3.级联查询: 1.关联查询 关联过滤查询 4.查询集 **查询 ...
- Django数据库orm操作以list形式获取数据库中某列所有值
文章目录 问题: 解决办法: 方式一: 方式二: 方式三: 写在最后 问题: 如图所示,Django数据库中存储如下字段. 这是在前端渲染出的数据.现在的需求是:要把factory这一列数据从后端数据 ...
- django数据库迁移需注意的问题
django迁移 django迁移就是在django的models.py中创建数据库表,有django自己规定的数据库操作语法. 直接使用SQL非常麻烦,Django附带了一个对象关系映射器,简称OR ...
- Django数据库基本配置
Django数据库基本配置 1.首先修改Settings中数据库配置 2.在app中的__init__添加代码(或者在django_site中的init文件) 3.创建数据表(在app的model.p ...
最新文章
- C# 创建控制台应用程序
- C# 5.0中引入了async 和 await
- 单招计算机专业综合测试,单招计算机专业模习题.doc
- Linux中Shell的命令替换用法笔记
- Teams与OneDrive for Business和SharePoint的关系
- php 页面加载进度条,HTML5/CSS3 网页加载进度条的实现,下载进度条等经典案例
- r语言 xmlto html,使用R语言将XML转换为CSV(示例代码)
- 【架构师培训课程-技术基础课】
- Bootstrap 按钮状态提示
- Nginx之gzip压缩配置
- 物联网卡得持续增长对企业带来怎样的挑战
- session 过期怎么办
- new一个对象的过程发生了什么
- GitHub上的那些LGTM和WIP代表什么
- 【第四章-2】Python爬虫教程(协程,多任务异步协程,aiohttp模块,异步爬虫实战:爬取《西游记》全部章节内容)
- 镶锆石、侧边指纹、双屏翻盖机,三星的这款2万块手机,只有土豪能懂
- SOFA Weekly | SOFAJRaft 发布、SOFAJRaft 源码解析文章合集
- AGV控制系统的6大优势介绍
- CDA数据分析师3个级别的薪资待遇|人才认证标准
- 什么是GP、LP、VC、PE、FOF