Django 学习笔记之五 Django中数据库中ManyToManyField及ForeignKey
1、model里面的代码:
from __future__ import unicode_literals
import django.utils.timezone as timezone
from django.db import models # Create your models here.
class Publisher(models.Model):
name = models.CharField(max_length=30)
address = models.CharField(max_length=30)
city = models.CharField(max_length=30) def __unicode__(self):
return self.name class Author(models.Model):
name = models.CharField(max_length=30)
email = models.EmailField() def __unicode__(self):
return self.name class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication = models.DateField(default=timezone.now()) def __unicode__(self):
return self.title
2、把数据写入数据库(sqlite)
#coding:utf-8
from django_book.wsgi import *
from book.models import Author,Book,Publisher
import datetime
import random #初始化作者数据
def InitAuthor():
namelist = ['mike','marry','jack','tom']
emaillist =['mike@sina.com','marry@sina.com','jack@qq.com','tom@qq.com']
autherList = []
for i in range(len(namelist)):
name = namelist[i];
email = emaillist[i]
auther = Author(name=name,email=email)
autherList.append(auther)
Author.objects.bulk_create(autherList) #初始化出版社数据
def InitPublisher():
namelist = ['shanghaipublisher', 'beijingpublisher', 'beishidapublisher', 'qinghuapublisher']
citylist = ['shanghai', 'beijing', 'beijing', 'beijing']
addresslist = ['shanghai_address', 'beijing_address', 'beijing_address', 'beijing_address']
publisherlist = []
for i in range(len(namelist)):
name = namelist[i];
city = citylist[i]
address = addresslist[i]
publisher = Publisher(name=name, city=city,address=address)
publisherlist.append(publisher)
Publisher.objects.bulk_create(publisherlist) #初始化书数据
def InitBook():
booklist = ['python','html','django','java']
publisherList = list(Publisher.objects.all())
authorList = list(Author.objects.all())
for i in range(len(booklist)):
title = booklist[i];
publisher = publisherList[i]
book, created =Book.objects.get_or_create(title=title,publisher=publisher,
publication=datetime.datetime.now())
book.author.add(authorList[i]) def DeleteBook():
bobj = Book.objects.all()
bobj.delete() def main():
# DeleteBook();
# InitAuthor()
# InitPublisher()
InitBook() if __name__ == '__main__':
main()
Django 学习笔记之五 Django中数据库中ManyToManyField及ForeignKey的更多相关文章
- Django 学习笔记(七)数据库基本操作(增查改删)
一.前期准备工作,创建数据库以及数据表,详情点击<Django 学习笔记(六)MySQL配置> 1.创建一个项目 2.创建一个应用 3.更改settings.py 4.更改models.p ...
- Django学习笔记之Django Form表单详解
知识预览 构建一个表单 在Django 中构建一个表单 Django Form 类详解 使用表单模板 回到顶部 构建一个表单 假设你想在你的网站上创建一个简单的表单,以获得用户的名字.你需要类似这样的 ...
- Django学习笔记之Django Form表单
Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...
- Django学习笔记-修改Django的默认的数据库
1.修改设置settings中的配置 DATABASES = { 'default': { # 'ENGINE': 'django.db.backends.sqlite3', # 'NAME': os ...
- Django学习笔记之Django QuerySet的方法
一般情况下,我们在写Django项目需要操作QuerySet时一些常用的方法已经满足我们日常大多数需求,比如get.filter.exclude.delete神马的感觉就已经无所不能了,但随着项目但业 ...
- Django学习笔记之Django中间件
准备 我们在前面的课程中已经学会了给视图函数加装饰器来判断是用户是否登录,把没有登录的用户请求跳转到登录页面.我们通过给几个特定视图函数加装饰器实现了这个需求.但是以后添加的视图函数可能也需要加上装饰 ...
- Django学习笔记之Django ORM相关操作
一般操作 详细请参考官方文档 必知必会13条 <> all(): 查询所有结果 <> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 <> ...
- Django学习笔记之Django的url反向解析
0x00 URL反向解析和三种不同的反向解析方式 Django中提供了关于URL的映射的解决方案,可以做两个方向的使用: 1.普通解析过程:由客户端的浏览器发起一个url请求,Django根据URL解 ...
- Django学习笔记009-django models进行数据库增删查改
引入models的定义 from app.models import myclass class myclass(): aa = models. CharField (max_length=No ...
随机推荐
- 学习Slim Framework for PHP v3 (三)
继续上一篇的问题,如何动态的添加不同的Module.添加Module是给Middleware用的,用于调用Module的写日志方法.上篇中的写法是在app->add(mv),这时的middlew ...
- DWZ (JUI) 教程 table 排序
dwz排序是后台排序,不是前台的js排序,他的流程和搜索,分页是一样的,当你点击排序的按钮时,从新发送请求刷新当前的navTable 和 dialog. <th width="60&q ...
- MySQL 数据类型 详解 (转载)
数值类型 MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数.许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 MySQL 允许我们指 ...
- 解密FFmpeg播放状态控制内幕
上一篇文章(http://my.oschina.net/u/2336532/blog/400790)我们解决了在FFmpeg下如何处理H264和AAC的扩展数据,根据解出的NALU长度恢复了H264的 ...
- JCrop+ajaxUpload 图像切割上传
先看效果 需要的文件下载 链接:http://pan.baidu.com/s/1b8SI6M 密码:59ct 页面代码 里面用户的uuid是写死的test <%@ page language=& ...
- javascript笔记——前端实现分页和查询
//Modal function Modal(obj){ var that = this; that.ref = ""; that.obj = obj; that.init(); ...
- 1. 走进java
走进java 1.java简介 1.1 java分类: 1.2 开发包JDK 1.3.一处编译,到处运行的特点 2. 配置开发环境 3. java基本语法 3.1关键字和保留字 3.2 标识符命名规则 ...
- Android下各个按键对应的key code
KEYCODE_UNKNOWN=0; KEYCODE_SOFT_LEFT=1; KEYCODE_SOFT_RIGHT=2; KEYCODE_HOME=3; KEYCODE_BACK=4; KEYCOD ...
- 一款功能强大的iphone购物应用源码
一款功能强大的iphone购物应用源码,这款应用源码比较完整的,并且还支持信用卡支付服务等功能的,基本实现了我们常用的购物应用功能了,实现商品的基本展示功能,还具有完整的用户管理,以及完整的购物流程等 ...
- <Linux系统hostname命令详解>
hostname命令的用法的小知识我们都知道hostname命令是查看主机名和修改主机名的. [root@apache ~]# hostname //查看本机的主机名apache.example.c ...