尊重作者的劳动,转载请注明作者及原文地址 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的更多相关文章

  1. Django入门--模型系统(一):模型基础

    1.Django的ORM介绍 对象关系映射(英语:(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不 ...

  2. Django入门--模型系统(二):常用查询及表关系的实现

    1.常用查询 模型类上的管理器: ** 模型类.objects ** (1)常用一般查询 rs = Student.objects.all() # 查询所有记录,返回Queryset print(rs ...

  3. Django 入门

    Django 入门 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模型,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容 ...

  4. Django入门笔记

    Django入门笔记 **文档包含Django安装包.学习的笔记.代码等 安装 Django参考附件,只需要把附件拷贝到你需要的目录就行.Django是1.8.16版本 Python:在附件中,其中有 ...

  5. Django入门与实践 17-26章总结

    Django入门与实践-第17章:保护视图 Django 有一个内置的视图装饰器 来避免它被未登录的用户访问: 现在如果用户没有登录,将被重定向到登录页面: 现在尝试登录,登录成功后,应用程序会跳转到 ...

  6. Django 入门项目案例开发(上)

    关注微信公众号:FocusBI 查看更多文章:加QQ群:808774277 获取学习资料和一起探讨问题. Django 入门案例开发(中) http://www.cnblogs.com/focusBI ...

  7. Django 入门案例开发

    Django是一个重量级的web开发框架,它提供了很多内部已开发好的插件供我们使用:这里不去描述 Django直接进入开发过程. Django入门案例分两部分:一.开发环境的配置:二.业务需求分析. ...

  8. python web框架Django入门

    Django 简介 背景及介绍 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的框架模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以 ...

  9. Django入门第一步:构建一个简单的Django项目

    Django入门第一步:构建一个简单的Django项目 1.简介 Django是一个功能完备的Python Web框架,可用于构建复杂的Web应用程序.在本文中,将通过示例跳入并学习Django.您将 ...

随机推荐

  1. 裸函数naked解析

    先分享一个案例: #include <stdio.h> __declspec(naked) void Test() { int x; x = ; __asm ret; } int main ...

  2. 解题报告-Perfect Squares

    Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 1 ...

  3. advance shading——基础(辐射度测定)

    辐射度测定(radiometry) <real time rendering>在这章上来就说了一大堆光照方面的物理术语,不知该怎么翻译.后来在维基百科上看到这个表,清楚了很多(这里的w是瓦 ...

  4. code3289 花匠

    题目大意是求一个最长的抖动的子序列 题解中有一个大神写下了这样的代码: #include<cstdio> ,b=,x,y; int mmax(int a,int b) { if(a> ...

  5. cakephp获取最后一条sql语句

    .在app\config\core.php中设置Configure::write(); .页面上追加如下代码: $dbo = ConnectionManager::getDataSource('def ...

  6. iPhone X的UI设计技巧

    以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具. 果粉们翘首以待的iPhone X终于开始预售了!同样满怀期待的还有设计师和开发人员,他们将在iPho ...

  7. LinUX系统ThinkPHP5链接MsSQL数据库的pdo_dblib扩展

    LinUX(centOS6.8)系统ThinkPHP5链接MsSQL数据库的pdo_dblib扩展第一步 下载并安装freetds-current.tar.gz下载地址如下ftp://ftp.free ...

  8. div模拟键盘输入

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  9. Linux 基础教程 43-su和sudo命令

        在使用Linux系统中,有时候还需要做身份切换,这是为什么? 使用普通账号:系统日常操作的好习惯   虽然使用root对系统进行各种操作不受权限等方面的限制,但却存在重大的安全隐患,假如有人不 ...

  10. Ansible运维自动化工具

    1>Ansible 1>ansible简介 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabri ...