九、靓号管理
9.1 表结构
class PrettyNum(models.Model):
"""靓号表"""
mobile = models.CharField(verbose_name="手机号", max_length=11)
# 想要允许为空 null=True, blank=True
price = models.IntegerField(verbose_name="价格", default=0)
level_choices = (
(1, "1级"),
(2, "2级"),
(3, "3级"),
(4, "4级"),
)
level = models.SmallIntegerField(verbose_name="级别", choices=level_choices, default=1)
status_choices = (
(1, "已占用"),
(2, "未占用"),
)
status = models.SmallIntegerField(verbose_name="状态", choices=status_choices, default=2)
9.2 靓号列表
- URL
- 函数
- 获取所有的靓号
- 结合html+render将靓号罗列出来
id 号码 价格 级别(中文) 状态(中文)
9.3新建靓号
- 列表点击跳转:/pretty/add/
- URL
- ModelForm类
from django import forms
class PrettyModelForm(forms.ModelForm):
- 函数
- 实例化类的对象
- 通过render将对象传入到HTML中
- 模版的循环展示所有的字段
- 点击提交
- 数据校验
- 保存到数据库
- 跳转回靓号列表
9.4 编辑靓号
- 列表页面:/pretty/数字/edit/
- URL
- 函数
- 根据ID获取当前编辑的对象
- ModelForm配合,默认显示数据
- 提交修改
不允许手机号重复
- 添加:【正则表达式】【手机号不能存在】
# [obj,obj,obj] queryset = models.PrettyNum.objects.filter(mobile="18888888888")obj = models.PrettyNum.objects.filter(mobile="18888888888").first() # True/False exists = models.PrettyNum.objects.filter(mobile=txt_mobile).exists()
- 编辑:【正则表达式】【手机号不能存在】
排除自己以外,其他的数据手机号是否重复?
# id!=2 and mobile='18888888888'
models.PrettyNum.objects.filter(mobile="18888888888").exclude(id=2)
9.5 搜索手机号
models.PrettyNum.objects.filter(mobile="18888888888",id=12)
data_dict = {"mobile":"18888888888","id":123}
models.PrettyNum.objects.filter(**data_dict)
models.PrettyNum.objects.filter(id=12) # 等于12
models.PrettyNum.objects.filter(id__gt=12) # 大于12
models.PrettyNum.objects.filter(id__gte=12) # 大于等于12
models.PrettyNum.objects.filter(id__lt=12) # 小于12
models.PrettyNum.objects.filter(id__lte=12) # 小于等于12
data_dict = {"id__lte":12}
models.PrettyNum.objects.filter(**data_dict)
models.PrettyNum.objects.filter(mobile="999") # 等于
models.PrettyNum.objects.filter(mobile__startswith="1999") # 筛选出以1999开头
models.PrettyNum.objects.filter(mobile__endwith="999") # 筛选出以999结尾
models.PrettyNum.objects.filter(mobile__contains="999") # 筛选包含999
data_dict = {"mobile__contains":"999"}
models.PrettyNum.objects.filter(**data_dict)
9.6 分页展示
注意:[a:b]的范围是左闭右开
queryset = models.PrettyNum.object.all()
queryset = models.PrettyNum.object.filter(id=1)[0:10]
#第1页
queryset = models.PrettyNum.object.all()[0:10]
#第2页
queryset = models.PrettyNum.object.all()[10:20]
#第3页
queryset = models.PrettyNum.object.all()[20:30]