Django MySQL数据库操作
上一篇文章写了一些基本的Django操作,下面重点介绍数据库的内容。
对象之间的关系:
- 一对一
- 一对多
- 多对多
1.一对多
先演示一对多的关系,多个blog对应一个名字, 修改blog/models.py
class Entry(models.Model):
name = models.CharField(max_length=30) def __unicode__(self):
return self.name class Blog(models.Model):
name = models.CharField(max_length=30)
entry = models.ForeignKey(Entry) def __unicode__(self):
return self.name
#在djang1.9以后,数据库同步执行指令如下:
#同步数据库接口(注意需要切换至python project工作空间所在路径)
python manage.py makemigrations
#同步数据
python manage.py migrate
填入数据时,必须首先填入外键,即这里的name。
学会基本的创建和查询操作
from blog.models import Entry, Blog
entry1 = Entry.objects.create(name='alen')
entry2 = Entry.objects.create(name='lee')
entry3 = Entry.objects.create(name='anna') blog1 = Blog.objects.create(name='alen_blog1', entry=entry1)
blog1.entry
blog1.id
entry1.blog_set.all()
2.多对多
作者和书之间的关系,多对多。
class Author(models.Model):
name = models.CharField(max_length=30) def __unicode__(self):
return self.name class Book(models.Model):
name = models.CharField(max_length=30)
authors = models.ManyToManyField(Author) def __unicode__(self):
return self.name
from blog.models import Author, Book
Author.objects.create(name='Alen')
Author.objects.create(name='eric')
Author.objects.create(name='lee')
Author.objects.create(name='zhang')
authors = Author.objects.all()
authors b1 = Book()
b1.name = 'python book1'
b1.save()
b1.authors.add()
alen = Author.objects.get(name__exact='Alen')
b1.authors.add(alen)
b1.authors.add(authors[1])
b1.authors.all()
b1.authors.add(authors[2])
b1.authors.add(authors[3])
b1.authors.all()
b1.authors.remove(alen)
b1.authors.all()
b1.authors.filter(name__exact='lee')
alen.book_set.all()
alen.book_set.add(b1)
alen.book_set.create(name='python book2')
books = Book.objects.all()
alen.book_set.remove(book[0])
alen.book_set.remove(books[0])
alen.book_set.all()
3.数据库数据网页显示
插一句,今天居然遇到了Ubuntu可以ssh连接,却无法上网的尴尬局面,估计是配置Apache的时候把系统搞乱了。搞了好久才发现是DNS解析问题,导致无法使用域名,但可以使用IP。
编辑/etc/resolv.conf文件
添加一行
nameserver 8.8.8.8
无意中把Django给卸载了,又重装了,以为网站访问不了,其实不用怕,很简单,创建prj和app,然后全部copy过去,网站就会恢复啦。
4.管理界面
sex_choices = {
('f', 'female'),
('m', 'male'),
}
class User(models.Model):
name = models.CharField(max_length=30)
sex = models.CharField(max_length=1, choices=sex_choices)
为blog应用添加用户。
django使用bootstrap快速美化 admin后台(新版不可用)
使用suit-v2美化Django Admin(兼容Django新版本!)
admin后天样式丢失,怎么解决?
Django MySQL数据库操作的更多相关文章
- Django 2.0 学习(14):Django ORM 数据库操作(上)
Django ORM 数据库操作(上) ORM介绍 映射关系: 数据库表名 ---------->类名:数据库字段 ---------->类属性:数据库表一行数据 ----------&g ...
- php : mysql数据库操作类演示
设计目标: 1,该类一实例化,就可以自动连接上mysql数据库: 2,该类可以单独去设定要使用的连接编码(set names XXX) 3,该类可以单独去设定要使用的数据库(use XXX): 4,可 ...
- php MySQL数据库操作类源代码
php MySQL数据库操作类源代码: <?php class MySQL{ private $host; //服务器地址 private $name; //登录账号 private $pwd; ...
- 设计模式 - 单例模式mysql数据库操作类
待续... index.php 调用方法: <?php header('Content-Type:text/html; charset=utf8'); require 'instance.php ...
- MySQL数据库操作常用命令
MySQL数据库操作常用命令DOS连接数据库1.安装MySQL配置好环境2.运行cmd命令net start mysql3.找到mysql文件根目录输入命令mysql -h localhost -u ...
- Python/MySQL(四、MySQL数据库操作)
Python/MySQL(四.MySQL数据库操作) 一.数据库条件语句: case when id>9 then ture else false 二.三元运算: if(isnull(xx)0, ...
- Java通过JDBC 进行MySQL数据库操作
转自: http://blog.csdn.net/tobetheender/article/details/52772157 Java通过JDBC 进行MySQL数据库操作 原创 2016年10月10 ...
- Mysql 数据库操作之DDL、DML、DQL语句操作
Mysql 数据库操作之DDL.DML.DQL语句操作 设置数据库用户名密码 l Show databases 查看数据库列表信息 l 查看数据库中的数据表信息 ,格式: use 数据库名: sh ...
- Python进行MySQL数据库操作
最近开始玩Python,慢慢开始喜欢上它了,以前都是用shell来实现一些自动化或者监控的操作,现在用Python来实现,感觉更棒,Python是一门很强大的面向对象语言,所以作为一个运维DBA或者运 ...
随机推荐
- Linux命令:查看文件内容cat|tac|more|less|head|tail|nl|od
查看文件内容的命令;cat, tac, more, less, head, tail, nl, 1)cat 由第一行开始显示文档内容,一直显示到最后 2)tac 从最后一行开始显示,一直显示到第一行内 ...
- Python中的is和==的区别,==判断值是否相等,is判断地址是否一致
Python中的is和==的区别 Python中的对象包含三要素:id.type.value. 其中id用来唯一标示一个对象,type标识对象的类型,value是对象的值. is判断的是a对象是否就是 ...
- HTML5 -canvas拖拽、移动 绘制图片可操作移动,拖动
关于canvas 的基础知识就不多说了,可以进这个网址学习 http://www.w3school.com.cn/html5/html_5_canvas.asp 对于canvas 和 SVG 其实一开 ...
- QEvent postEvent/sendEvent
可以自訂事件類型,最簡單的方式,是透過QEvent::Type指定事件類型的常數值,在建構QCustomEvent時作為建構引數並透過postEvent()傳送事件,例如: const QEvent: ...
- [转载] My97DatePicker日历实现开始日期小于结束日期验证
<tr align='center'> <td align="right">开始日期: </td> <td align="lef ...
- selinux配置错误实例介绍
错误原因 配置关闭SELinux,结果误操作 应修改配置文件/etc/selinux/config中的“SELINUX”参数的值, # SELINUX=enforcing 原始配置 SELINUX= ...
- Mysql截取和拆分字符串函数用法
Mysql截取和拆分字符串函数用法 截取字符串函数: SUBSTRING(commentid,9) 意思是:从第9个字符开始截取到最后.SUBSTRING的参数有三个,最后一个是截取的长度,默认是到结 ...
- Android java 多线程(三)
- 关于Session的概念和测试点
Session概要 Session 是用于保持状态的基于 Web 服务器的方法,在 Web 服务器上保持用户的状态信息供在任何时间从任何页访问. Session 允许通过将对象存储在 Web 服务器的 ...
- JavaScript:值类型 引用类型
JavaScript类型 (1)值类型:数值.布尔值.null.undefined. (2)引用类型:对象.数组.函数. 1.string var str="hongda"; v ...