django入门-模型-part2
尊重作者的劳动,转载请注明作者及原文地址 http://www.cnblogs.com/txwsqk/p/6511177.html
完全翻译自官方文档 https://docs.djangoproject.com/en/1.10/intro/tutorial02/
这章讲数据库相关
在settings.py的数据库配置中默认是使用sqllite,如果只是用来练手那么你不用修改数据库的配置
# Database
# https://docs.djangoproject.com/en/1.10/ref/settings/#databases DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
如果要用mysql,就是下面的配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test', # 数据库名称
'USER': 'root',
'PASSWORD': 'password',
'HOST': '127.0.0.1',
}
}
别忘了修改下配置文件的时区和语言
LANGUAGE_CODE = 'zh-hans' # django 1.10种要用zh-hans,如果用zh-cn会报错 TIME_ZONE = 'Asia/Shanghai'
django默认加载的apps(settings.py中的INSTALLED_APPS)需要用到数据库,下面我们先创建需要用的库和表
python manage.py migrate
下面在应用中创建数据库模型 polls/models.py
from django.db import models class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published') class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
django支持数据库的外键: 多对一,多对多,一对一
关于Field的具体内容请参考 https://docs.djangoproject.com/en/1.10/ref/models/fields/#django.db.models.Field
要是我们的model被django发现,需要在INSTALLED_APPS中添加我们的应用
INSTALLED_APPS = [
'pools',
'suit',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
suit这个应用是django admin的一个扩展,可以让django的admin界面更好看,推荐!!!
下面有几个命令要说明一下
python manage.py makemigrations polls #在本地生成一个文件 ,记录你的model的变动 python manage.py sqlmigrate polls 0001 # 详细显示出django根据这次修改的model.py文件 实际要做的事,它只是打印一下内容,而不会实际去修改数据库 python manage.py migrate # 运行这个命令,你的数据库就根据你的models.py完成修改了 python manager.py check # 检查你的model.py
如果你要修改你的模型models.py 记住3个步骤
1. 修改你的models.py
2. 执行 python manage.py makemigrations
3. python manage.py migrate 应用修改
最好为你的每个模型添加__str__()方法,这会让你的模型的输出更加友好
不然可能是这样的输出
>>> Question.objects.all()
<QuerySet [<Question: Question object>]>
所以请添加__str__()方法
from django.db import models
from django.utils.encoding import python_2_unicode_compatible @python_2_unicode_compatible # 兼容python2
class Question(models.Model):
# ...
def __str__(self):
return self.question_text @python_2_unicode_compatible
class Choice(models.Model):
# ...
def __str__(self):
return self.choice_text
然后它会这么显示
# Make sure our __str__() addition worked.
>>> Question.objects.all()
<QuerySet [<Question: What's up?>]>
django自带管理后台,可以方便的查看和修改数据库内容
我们先创建后台界面的管理员账户
python manage.py createsuperuser #根据提示输入用户名,邮箱,密码
现在可以访问后台界面了 http://127.0.0.1:8000/admin/
如果你想通过后台展示你的模型,修改应用里的admin.py
from django.contrib import admin from .models import Question admin.site.register(Question)
本节完
django入门-模型-part2的更多相关文章
- Django入门--模型系统(一):模型基础
1.Django的ORM介绍 对象关系映射(英语:(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不 ...
- Django入门--模型系统(二):常用查询及表关系的实现
1.常用查询 模型类上的管理器: ** 模型类.objects ** (1)常用一般查询 rs = Student.objects.all() # 查询所有记录,返回Queryset print(rs ...
- Django 入门
Django 入门 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模型,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容 ...
- Django入门笔记
Django入门笔记 **文档包含Django安装包.学习的笔记.代码等 安装 Django参考附件,只需要把附件拷贝到你需要的目录就行.Django是1.8.16版本 Python:在附件中,其中有 ...
- Django入门与实践 17-26章总结
Django入门与实践-第17章:保护视图 Django 有一个内置的视图装饰器 来避免它被未登录的用户访问: 现在如果用户没有登录,将被重定向到登录页面: 现在尝试登录,登录成功后,应用程序会跳转到 ...
- Django 入门项目案例开发(上)
关注微信公众号:FocusBI 查看更多文章:加QQ群:808774277 获取学习资料和一起探讨问题. Django 入门案例开发(中) http://www.cnblogs.com/focusBI ...
- Django 入门案例开发
Django是一个重量级的web开发框架,它提供了很多内部已开发好的插件供我们使用:这里不去描述 Django直接进入开发过程. Django入门案例分两部分:一.开发环境的配置:二.业务需求分析. ...
- python web框架Django入门
Django 简介 背景及介绍 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的框架模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以 ...
- Django入门第一步:构建一个简单的Django项目
Django入门第一步:构建一个简单的Django项目 1.简介 Django是一个功能完备的Python Web框架,可用于构建复杂的Web应用程序.在本文中,将通过示例跳入并学习Django.您将 ...
随机推荐
- nodejs API(二)
官网所在位置:https://nodejs.org/dist/latest-v6.x/docs/api/querystring.html querystring.escape(str) 转义 qu ...
- confd test
vi /etc/confd/confd.toml backend = "consul"confdir = "/etc/confd"log-level = &qu ...
- web和wap网站的区别 (转)
WAP的全称是“无线应用协议(Wireless Application Protocol)”,是一种向移动终端提供互联网内容和先进增值服务的全球统一的开放式协议标准, 是简化了的无线Internet ...
- MySql 关键字冲突解决办法
今天把项目发布到另一台机器上时,因为mysql版本不一致,出现了关键字冲突,virtual关键字,不清楚是不是mysql添加的新特性. select * from herb where name=&q ...
- oracle之Sequences
产生这样的代码,运行即可
- Visual Studio 2013 osg
1>------ Rebuild All started: Project: ZERO_CHECK, Configuration: Debug x64 ------1> Checking ...
- 784. Letter Case Permutation 字符串中字母的大小写组合
[抄题]: Given a string S, we can transform every letter individually to be lowercase or uppercase to c ...
- Java 设计模式系列(二二)责任链模式
Java 设计模式系列(二二)责任链模式 责任链模式是一种对象的行为模式.在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链.请求在这个链上传递,直到链上的某一个对象决定处理此请求 ...
- 数据挖掘中ID3算法实现zz
id3 function D = ID3(train_features, train_targets, params, region) % Classify using Quinlan's ID3 a ...
- java类加载器的一些测试
package classloader; import java.lang.reflect.Method; import org.junit.Test; import com.example.Samp ...