Django 模型(数据库):
2017-12-26 15:01
423 查看
Django 模型(数据库): Django模型是与数据库相关的,与数据库相关的代码一般写在models.py中, Django支持sqlite3,MySQL,PostgreSQL等数据库, 1.新建项目和应用 django-admin.py startproject learn_models # 新建一个项目 node2:/app#django-admin.py startproject learn_models node2:/app# cd learn_models # 进入到该项目的文件夹 node2:/app/learn_models#django-admin.py startapp people node2:/app/learn_models# django-admin.py startapp people # 新建一个 people 应用(app) node2:/app/learn_models#ls learn_models manage.py people 补充:新建app也可以用 python manage.py startapp people, 需要指出的是,django-admin.py是安装Django后多处的一个命令, 并不是运行的当前目录下的django-admin.py(当前目录下也没有),但创建项目会生成一个 manage.py 文件。 2.将我们新建的应用(peolple)添加到settings.py中的INSTALLED_APPS中,也就是告诉Django有这么一个应用: INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'people', ) 3.修改models.py 我们打开people/models.py 文件,修改其中的代码如下: from django.db import models class Person(models.Model): name = models.CharField(max_length=30) age = models.IntegerField() 我们新建了一个Person类,继承自models.Model,一个人有姓名和年龄 这里用到了两种Field,更多Field 4. 创建数据库 我们来同步一下数据库(我们使用默认的数据库 SQLite3,无需配置) 先 cd 进入 manage.py 所在的那个文件夹下,输入下面的命令 # Django 1.6.x 及以下 python manage.py syncdb # Django 1.7 及以上的版本需要用以下命令 python manage.py makemigrations python manage.py migrate node2:/app/learn_models#python manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying sessions.0001_initial... OK node2:/app/learn_models# node2:/app/learn_models#python manage.py makemigrations Migrations for 'people': people/migrations/0001_initial.py - Create model Person node2:/app/learn_models#python manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, people, sessions Running migrations: Applying people.0001_initial... OK node2:/app/learn_models# Running migrations: Applying people.0001_initial... OK 我们会看到,Django 生成了一系列的表,也生成了我们新建的people_person这个表,表示如何使用这个表呢? 5.使用 Django 提供的 QuerySet API Django 提供了丰富的API,下面演示如何使用它: learn_models manage.py people node2:/app/learn_models# (InteractiveConsole) >>> from people.models import Person >>> Person.objects.create(name="WeizhongTu", age=24) <Person: Person object> >>> mysql> select * from people_person; +----+------------+-----+ | id | name | age | +----+------------+-----+ | 1 | WeizhongTu | 24 | +----+------------+-----+ 1 row in set (0.00 sec) 我们新建了一个用户weizhongTu那么如何从数据库查询到它呢? 我们用一个.objects.get() 方法查询出来符合条件的对象,但是大家注意到了没有, 查询结果中显示<Person: Person object>,这里并没有显示出与WeizhongTu的相关信息, 如果用户多了就无法知道查询出来的到底是谁,查询结果是否正确 >>> from people.models import Person >>> Person.objects.get(name="WeizhongTu") <Person: WeizhongTu> 新建一个对象的方法有以下几种: 1.Person.objects.create(name=name,age=age) >>> Person.objects.get_or_create(name="WZT", age=23) (<Person: WZT>, True) 这种方法是防止重复很好的方法,但是速度要相对慢些,返回一个元组,第一个为Person对象, 第二个为True或False,新建时返回的是True,已经存在时返回False >>> Person.objects.get_or_create(name="WZT", age=23) (<Person: WZT>, True) >>> Person.objects.get_or_create(name="WZT", age=23) (<Person: WZT>, False)
相关文章推荐
- 建立django博客应用及数据库模型
- Django blog - 03 -创建Django博客博客的数据库模型
- Django 模型(数据库)操作的要点
- Django数据模型动态增删字段(更改数据库模式)
- Django 模型和数据库 总结
- Django学习06---Model模型(数据库)
- 通过数据库对Django进行删除字段和删除模型的操作
- django的数据库模型中的域多次引用同一个外键(表)
- Django 1.10.2 模型数据库操作
- Django项目实践3 - Django模型(view-数据库)
- django 模型model与数据库3——高级操作(外联,多对多,修改字段)
- Django项目实践3 - Django模型(字段、数据库操作及模型继承)
- The Definitive Guide To Django 2 学习笔记(九) 第五章 模型 (一)数据库访问
- django模型——数据库(二)
- Django项目实践3 - Django模型(view-数据库)
- Django模型数据库
- django专题—数据模型、数据库访问、数据传递
- Django来敲门~第一部分【5.2.模型和数据库交互】
- django python query Making queries -- 模型的数据库查询 good
- Django项目-数据库,模型创建