首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

django学习-day06

###2.ORM模型 把行映射成类,把列映射成实例,把字段映射成方法 首先需要在setting中设置datebase数据库信息,然后在新建的app中的models中创建类,继承自models.Model,一定要在installe_apps中添加app,不然不会映射生效

from django.db import models class Book(models.Model): id=models.AutoField(primary_key=True) # 设置自动增长的主键 name=models.CharField(max_length=100,null=False) # 必须要有最大值 author=models.CharField(max_length=100,null=False) price=models.FloatField(null=False,default=0) # 指定浮点类型 设置默认值

1.类创建好了之后开始制作迁移脚本 python manage.py makemigrations 如果爆出Did you install mysqlclient? 在app的__init__.py 中添加 import pymysql pymysql.install_as_MySQLdb() 即可 成功之后会生成提示信息 Migrations for ‘demo’: demo\migrations\0001_initial.py – Create model Book

有脚本提示信息之后 python manage.py migrate 映射信息到数据库中, 会得到以下提示信息 Operations to perform: Apply all migrations: admin, auth, contenttypes, demo, 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 admin.0003_logentry_add_action_flag_choices… 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 auth.0009_alter_user_last_name_max_length… OK Applying auth.0010_alter_group_name_max_length… OK Applying auth.0011_update_proxy_permissions… OK Applying demo.0001_initial… OK Applying sessions.0001_initial… OK *** 然后到数据库中就可以看到生成的表了,你需要的表,脚本生成名字规则为,先使用app名字为前缀,然后使用你定义的类名为后缀,如demo_book,这个就是以后存放数据的表了 表里面所有的字段都是你在写类的时候定义的属性名 也就是,把你的行,映射成类,把列映射成实例,把字段映射成属性 注意的是,id那个字段,写和不写是一样的,因为django会自己创建一个字段名为id,自增长的主键,所以,不用写也是一样的效果的 Operations to perform: Apply all migrations: admin, auth, contenttypes, demo, sessions Running migrations: Applying demo.0002_text… OK 但是执行命令还是那两句 python manage.py makemigrations python manage.py migrate 这样才符合人生苦短我用python这句话嘛

###orm的基本增删改查 def index(request): # 添加一条数据到数据库中 # book=Book(name=’三国演义’,author=’罗贯中’,price=’200′) # book.save()

# 查询操作 # 根据主键进行查找 # book=Book.objects.get(id=1) # 只获取到一条数据 id=1 # 根据主键查找,写在get中 # print(book)

# 根据其他条件查找 # book=Book.objects.filter(name=’三国演义’) # filter 是过滤的意思,表示查找到name下所有的值,返回列表 # print(book)

# 删除数据 # book=Book.objects.get(id=2) # book.delete() # 如果数据不存在抛出异常 直接用delete即可删除 # 修改数据 book=Book.objects.get(id=1) book.price=300 # 获取到的数据中心字段的名称=需要更改的值 book.save() return HttpResponse(‘图书添加成功’)

field的操作 boolfield 布尔值存储 field 的常用参数 null 验证表单是否为空

from django.db import models class Book(models.Model): id=models.AutoField(primary_key=True) # 设置自动增长的主键 name=models.CharField(max_length=100,null=False) # 必须要有最大值 author=models.CharField(max_length=100,null=False) price=models.FloatField(null=False,default=0) # 指定浮点类型 设置默认值 def __str__(self): return “<Book:({},{},{})>”.format(self.name,self.author,self.price) # 重写python中的str类方法,打印让输出信息更好看些 class Meta: db_table=’author’ # 重新定义数据库的名字为,且必须为db_table=author,左边必须为db_table,然后执行 makemigrations,migrate,就可以看到数据库名字被更改了

下一篇
举报
领券