[项目]Djanjgo+python+mysql8 二

九、靓号管理

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
  • 函数
    1. 获取所有的靓号
    2. 结合html+render将靓号罗列出来

id        号码        价格        级别(中文)        状态(中文)

 9.3新建靓号

  • 列表点击跳转:/pretty/add/
  • URL
  • ModelForm类
from django import forms

class PrettyModelForm(forms.ModelForm):
  • 函数
    1. 实例化类的对象
    2. 通过render将对象传入到HTML中
    3. 模版的循环展示所有的字段
  • 点击提交
    1. 数据校验
    2. 保存到数据库
    3. 跳转回靓号列表

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]

  • 32
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值