尊重作者的劳动,转载请注明作者及原文地址 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. 对List集合进行排序

    一.说明 使用Collections工具类的sort方法对list进行排序 新建比较器Comparator 二.代码 排序: import java.util.ArrayList; import ja ...

  2. ios开发者账号、证书相关内容

    背景:因为在实际测试中会涉及到不同的证书,而自己又对证书不了解,所以去查资料了解了一下不同证书的区别,如果有不对的地方,欢迎指正补充.   In House:所有手机都可以安装,但是不能上传到app ...

  3. 62. Unique Paths (Graph; DP)

    A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...

  4. Python 入门学习(壹)上机时间提醒

    基于 Udacity 的 Python 入门课程 Programming Foundations with Python 基于 Python 2.7 控制台版本 思路 Project 1 是一个时间提 ...

  5. Linux automake命令

    1)automake 使用教程 http://loftor.com/archives/automake.html 2)configure.in Makefile.am解析 http://blog.cs ...

  6. Pwdump v7.1

    提取windows系统密码  和 hash值

  7. Mybatis的select查询的三种方式

    1.首先建立一个测试的dao public interface IStudentDao { // 根据姓名查询 List<Student> selectStudentsByName(Str ...

  8. swoole1.8.0+版本异步redis安装(本实例为swoole1.8.10版本)详解

    Swoole-1.8.0+版本增加了对异步Redis客户端的支持,基于redis官方提供的hiredis库实现.Swoole提供了__call魔术方法,来映射绝大部分Redis指令(本次安装实例为sw ...

  9. RocketMQ 自定义文件路径

    一 .1. 修改store路径2. 修改logs路径3. 修改rmq_bk_gc.log路径4. 修改rmq_srv_gc.log路径二 .1. 获取正确的rocketmq 源码2. 地址:https ...

  10. polymer入门例子-已过时

    这个教程挺不错!:http://blog.csdn.net/renfufei/article/details/37040883 过时了,现在的版本已经为1.0了 一:创建APP结构 本教程会使用预先构 ...