model:
双下划线:
# 获取个数 # # models.Tb1.objects.filter(name='seven').count() # 大于,小于 # # models.Tb1.objects.filter(id__gt=1) # 获取id大于1的值 # models.Tb1.objects.filter(id__gte=1) # 获取id大于等于1的值 # models.Tb1.objects.filter(id__lt=10) # 获取id小于10的值 # models.Tb1.objects.filter(id__lte=10) # 获取id小于10的值 # models.Tb1.objects.filter(id__lt=10, id__gt=1) # 获取id大于1 且 小于10的值
关键字:
字段的参数: null -> db是否可以为空 default -> 默认值 primary_key -> 主键 db_column -> 列名 db_index -> 索引 unique -> 唯一索引 unique_for_date -> 时间 unique_for_month ->月 unique_for_year ->年 auto_now -> 创建时,自动生成时间 auto_now_add -> 更新时,自动更新为当前时间 choices -> django admin中显示下拉框,避免连表查询 blank -> django admin是否可以为空 verbose_name -> django admin显示字段中文 editable -> django admin是否可以被编辑 error_messages -> 错误信息欠 help_text -> django admin提示 validators -> django form ,自定义错误信息(欠)
外键操作:
说到外键,我们并不陌生,之前我们学过sqlalchemy,为了减少输入的重复性,下面我们来看看django的外键操作:
首先,我们要更新我们的数据库,因为是外键所以必须是多个表之间的关系。
from django.db import models # Create your models here. #外键,用户组织架构信息 class user_group(models.Model): #主键 uid = models.AutoField(primary_key=True) caption = models.CharField(max_length=128,db_index=True) #用户名基本信息 class UserInfo(models.Model): username = models.CharField(max_length=32,db_index=True) password = models.CharField(max_length=64,db_index=True) email = models.EmailField() tel = models.IntegerField() u_group = models.ForeignKey(to='user_group',to_field='uid')
外键的查询
#如上表的示例: user_list = models.UserInfo.objects.all() for row in user_list: print(row.username,row.password,row.email,row.tel,row.u_group.caption,row.u_group.uid)
多对多:
创建方式一(自定义关系表):
class Host(models.Model): nid = models.AutoField(primary_key=True) hostname = models.CharField(max_length=32,db_index=True) ip = models.GenericIPAddressField(protocol="ipv4",db_index=True) port = models.IntegerField() b = models.ForeignKey(to="Business", to_field='id') # 10 class Application(models.Model): name = models.CharField(max_length=32) # 2 class HostToApp(models.Model): hobj = models.ForeignKey(to='Host',to_field='nid') aobj = models.ForeignKey(to='Application',to_field='id') # HostToApp.objects.create(hobj_id=1,aobj_id=2)
创建方式二(自动创建关系表):
class Host(models.Model): nid = models.AutoField(primary_key=True) hostname = models.CharField(max_length=32,db_index=True) ip = models.GenericIPAddressField(protocol="ipv4",db_index=True) port = models.IntegerField() b = models.ForeignKey(to="Business", to_field='id') # 10 class Application(models.Model): name = models.CharField(max_length=32) r = models.ManyToManyField("Host") 无法直接对第三张表进行操作 obj = Application.objects.get(id=1) obj.name # 第三张表操作 obj.r.add(1) obj.r.add(2) obj.r.add(2,3,4) obj.r.add(*[1,2,3,4]) obj.r.remove(1) obj.r.remove(2,4) obj.r.remove(*[1,2,3]) obj.r.clear() obj.r.set([3,5,7])