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后天样式丢失,怎么解决?
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2016-06-20 比对工具之 BWA 使用方法
2016-06-20 项目一:使用二代测序数据进行基因组组装(局部组装)
2016-06-20 Linux 打包和压缩 方法详解
2016-06-20 python学习笔记