上一篇文章写了一些基本的Django操作,下面重点介绍数据库的内容。

对象之间的关系:

  1. 一对一
  2. 一对多
  3. 多对多

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数据库操作的更多相关文章

  1. Django 2.0 学习(14):Django ORM 数据库操作(上)

    Django ORM 数据库操作(上) ORM介绍 映射关系: 数据库表名 ---------->类名:数据库字段 ---------->类属性:数据库表一行数据 ----------&g ...

  2. php : mysql数据库操作类演示

    设计目标: 1,该类一实例化,就可以自动连接上mysql数据库: 2,该类可以单独去设定要使用的连接编码(set names XXX) 3,该类可以单独去设定要使用的数据库(use XXX): 4,可 ...

  3. php MySQL数据库操作类源代码

    php MySQL数据库操作类源代码: <?php class MySQL{ private $host; //服务器地址 private $name; //登录账号 private $pwd; ...

  4. 设计模式 - 单例模式mysql数据库操作类

    待续... index.php 调用方法: <?php header('Content-Type:text/html; charset=utf8'); require 'instance.php ...

  5. MySQL数据库操作常用命令

    MySQL数据库操作常用命令DOS连接数据库1.安装MySQL配置好环境2.运行cmd命令net start mysql3.找到mysql文件根目录输入命令mysql -h localhost -u ...

  6. Python/MySQL(四、MySQL数据库操作)

    Python/MySQL(四.MySQL数据库操作) 一.数据库条件语句: case when id>9 then ture else false 二.三元运算: if(isnull(xx)0, ...

  7. Java通过JDBC 进行MySQL数据库操作

    转自: http://blog.csdn.net/tobetheender/article/details/52772157 Java通过JDBC 进行MySQL数据库操作 原创 2016年10月10 ...

  8. Mysql 数据库操作之DDL、DML、DQL语句操作

    Mysql 数据库操作之DDL.DML.DQL语句操作 设置数据库用户名密码 l  Show databases 查看数据库列表信息 l  查看数据库中的数据表信息 ,格式: use 数据库名: sh ...

  9. Python进行MySQL数据库操作

    最近开始玩Python,慢慢开始喜欢上它了,以前都是用shell来实现一些自动化或者监控的操作,现在用Python来实现,感觉更棒,Python是一门很强大的面向对象语言,所以作为一个运维DBA或者运 ...

随机推荐

  1. 浅谈CDN加速问题

    (以百度CDN进行分析) 婆说婆有理,公说公有理.是否使用CDN,不同的工程师有不同的意见. 这里呢我来进行一下简单的分析. [正方观点] 1. 提升网站加载速度:CDN通过缓存技术提升网站打开速度, ...

  2. 代码静态检查Eclipse插件:SonarLint插件离线安装

    Eclipse Version: Oxygen.3a Release (4.7.3a)Myeclipse版本: 10.7 SonarLint 插件离线安装包:org.sonarlint.eclipse ...

  3. python3.4学习笔记(十) 常用操作符,条件分支和循环实例

    python3.4学习笔记(十) 常用操作符,条件分支和循环实例 #Pyhon常用操作符 c = d = 10 d /= 8 #3.x真正的除法 print(d) #1.25 c //= 8 #用两个 ...

  4. HTTP从入门到入土(5)——HTTP报文格式

    HTTP报文格式 HTTP报文分为请求报文和响应报文,只有发送了请求报文,才会有响应报文. 常见的报文格式如下所示:

  5. Web负载均衡学习笔记之实现负载均衡的几种实现方式

    0x00 概要 负载均衡(Load Balance)是集群技术(Cluster)的一种应用.负载均衡可以将工作任务分摊到多个处理单元,从而提高并发处理能力.目前最常见的负载均衡应用是Web负载均衡.根 ...

  6. 20135234mqy-——信息安全系统设计基础第九周学习总结

    第十章 系统级I/O 10.1 Unix I/O 一个Unix文就是一个m个字节的序列 Unix:将设备映射为文件的方式,允许Unix内核引出一个简单低级的应用接口 能够使得所有输入输出都能以一种统一 ...

  7. 安装VS提示系统找不到指定路径

    解决办法:删除C:\ProgramData\Package Cache快捷方式

  8. vs2012旗舰版 有效注册密钥

    Microsoft Visual Studio Ultimate 2012 旗舰版 有效注册密钥: YKCW6-BPFPF-BT8C9-7DCTH-QXGWC

  9. Django框架(四) Django之视图层

    视图函数 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. . ...

  10. linux下使用docker-thunder-xware进行离线下载

    1.环境: lsb_release -a hello@jhello:~$ lsb_release -aNo LSB modules are available.Distributor ID: Ubun ...