ORM字段
常见字段
1.CharField(max_length,verbose_name=))
2.AutoField(primary_key)
BigAutoField(AutoField)
- bigint自增列,必须填入参数 primary_key=True
3.IntgerField()
BigInterField()
4.DecimalField(max_digits=位数,decimal_places=小数位数)
5..EmailField() ---> varchar(254)
由组件进行验证
6. DateField
DateTimeField
两个参数:
1.auto_now:每次操作数据的时候都会修改时间
2.auto_now_add:在创建数据的时候自动生成时间,更新时不会有改动
Emailfield
7.BooleanField()
参数传入布尔值,数据库存储0和1
8.TextField()
打断文本,没有字符限制
9.FileField()
upload_to = '目录'
会自动将文件对象传入到目录之下
自定义字段
class MyCharField(models.Field):
def __init__(self, *args, **kwargs):
super(MyCharField, self).__init__( *args, **kwargs)
def db_type(self, connection):
return 'int'
ps:继承传入的参数必须写成变量名等于值的形式:
class MyCharField(models.Field):
def __init__(self,max_length,*args,**kwargs):
self.max_length = max_length
super().__init__(max_length=max_length,*args,**kwargs)
def db_type(self, connection):
"""
返回真正的数据类型及各种约束条件
:param connection:
:return:
"""
return 'char(%s)'%self.max_length
myfield = MyCharField(max_length=16,null=True)
外键字段
1 ForeignKey
2.OneToOneField
3.ManyToManyField
重要的参数:
1、unique 唯一
2、index 添加索引
3、on_delete 级联删除
测试环境配置
从manage.py复制前四行代码,手动写两行代码
import os
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "a.settings")
import django
django.setup()
单表操作(增删改查)
import os
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "dy65.settings")
import django
django.setup()
from app01 import models
models.User.objects.create(name='root', age=18)
user_obj = models.User.objects
user_obj.create(name='wx', age=18)
models.User.objects.filter(pk=3).delete()
user_obj = models.User.objects.filter(pk=2).first()
user_obj.delete()
models.User.objects.filter(pk=1).update(name='wx')
user_obj = models.User.objects.filter(pk=1).first()
user_obj.name = 'root'
user_obj.save()
models.User.objects.all()
models.User.objects.filter()
13条模型层操作方法
1.all() 查询所有
2.get() 条件筛选,没有直接报错
res = models.User.objects.get(pk=1)
3.filter() 条件筛选,不会报错
4.first() 拿到queryset中的第一个
5.last() 拿到queryset中的最后一个
6.values() 指定获取的字段入values('id','name') 列表套字典
res = models.User.objects.all().values('id','name')
<QuerySet [{
'id': 1, 'name': 'root'}, {
'id': 4, 'name': 'cc'}, {
'id': 5, 'name': 'cs1c'}, {
'id': 6, 'name': 'csscc'}, {
'id': 7, 'name': 'cs'}, {
'id': 8, 'name': 'dd'}]>
7.values_list() 指定获取的字段 列表套元组
res =models.User.objects.all()