orm介绍

一-    ①orm数据库创建,需要在models里面定义好要建的表,

  ②在app01项目下的__init__.py文件内写入
          import pymysql
          pymysql.install_as_MySQLdb()

  ③在pycharm控制台依次输入一下语句,如果没有app01(项目)则需创建并在settings内配置
        python3 manage.py makemigrations
        只需要敲命令:makemigrations(记录数据库的修改记录)
        python3 manage.py migrate
        只需要敲命令:migrate(把数据同步到数据库)

二- orm能干和不能干的事

  1 能创建数据表,新增,删除字段

  2 不能创建数据库

三- orm增加字段:(注意数据库迁移命令2条)  注意:后来增加的字段,需要有默认值

  方式1:User.objects.create(address='')

  方式2:实例化产生一个user对象,user对象的save方法

四 删除字段  注释掉字段,执行数据库迁移命令

  方式1:User.objects.filter(id=1,name='lqz').first().delete()
  方式2:User.objects.filter(id=1,name='lqz').delete()

五 修改数据  直接修改字段,执行数据库迁移命令

  User.objects.filter(id=1,name='lqz').update()

 

六 增删改查

  1 单表查询所有用户:models.User.objects.all()

    得到的是 queryset对象(当成列表),列表里面,一个一个的对象[user1,user2]

  2 render(request, 'userlist.html', {'user_list': ret})

  3 模板里:   {% for user in user_list %}

          #要循环的内容

          {{user.name}}

        {% endfor%}

  4 get请求携带参数:

    http://127.0.0.1:8000/deleteuser/?id=1

    后台取值:request.GET.get('id')

         request.GET['id']

  5 orm删除记录 models.User.objects.filter(id=id).delete()

    返回值:影响的行数

  6 前台post提交的数据取值:name=request.POST.get('name')

  7 orm保存:两种方式:

    1 user=models.User.objects.create(name=name,password=pwd,address=addr)

    2 user=models.User(name=name,password=pwd,address=addr)

     user.save()

  8 orm查询单条数据:user=models.User.objects.filter(id=id).first()

  9 orm的修改 models.User.objects.filter(id=id).update(name=name,password=pwd,address=addr)

  前后台交互
		<form action="/updateuser/?id={{ user.id }}" method="post">
			<p><input type="hidden" name="id" value="{{ user.id }}"></p>
			<p>用户名: <input type="text" name="name" value="{{ user.name }}"></p>
			<p>密码: <input type="text" name="password" value="{{ user.password }}"></p>
			<p>地址: <input type="text" name="addr" value="{{ user.address }}"></p>
			<input type="submit" value="提交">
		</form>

 七、Django生命周期

八、表的设计

一对多,多对多

  一对多:对多的关系一旦确立,关联字段写在多的一方

  publish=models.ForeignKey(to='Publish', to_field='id')

  多对多:(自动创建第三张表)

  authors = models.ManyToManyField(to='Author')

 

posted @ 2018-11-07 21:36  大张哥  阅读(390)  评论(0编辑  收藏  举报