加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

django-改写manage类-objects

发布时间:2020-12-20 10:27:11 所属栏目:Python 来源:网络整理
导读:user/models.py中 class AddressManage(models.Manager): ‘‘‘ 地址模型管理类 ‘‘‘ def get_default_addr(self,user): ‘‘‘ 获取默认收货地址 ‘‘‘ try : address = self.get(user=user,is_default= True) except self.model.DoesNotExist: # 不存

user/models.py中

class AddressManage(models.Manager):
    ‘‘‘地址模型管理类‘‘‘
    def get_default_addr(self,user):
        ‘‘‘获取默认收货地址‘‘‘
        try:
            address = self.get(user=user,is_default=True)
        except self.model.DoesNotExist:
            # 不存在默认收货地址
            address = None
        return address


class Address(BaseModel):
    ‘‘‘地址模型类‘‘‘
    user = models.ForeignKey(User,verbose_name=所属账户,on_delete=models.CASCADE,)
    receiver = models.CharField(max_length=20,verbose_name=收件人)
    addr = models.CharField(max_length=256,verbose_name=收件地址)
    zip_code = models.CharField(max_length=6,null=True,verbose_name=邮政编码)
    phone = models.CharField(max_length=11,verbose_name=联系电话)
    is_default = models.BooleanField(default=False,verbose_name=是否默认)
    # 自定义一个模型管理器对象
    objects = AddressManage()

    class Meta:
        db_table = df_address
        verbose_name = 地址
        verbose_name_plural = verbose_name

视图函数views.py中直接调用方法

# 用户地址
# /user/address
from user.models import Address
class AddressView(LoginRequiredMinxin,View):
    def get(self,request):
        ‘‘‘显示用户信息页面‘‘‘
        # 获取地址信息
        user = request.user
        address = Address.objects.get_default_addr(user)
        print(address)
        return render(request,user_center_site.html,{page:address,address:address})

    def post(self,request):
        ‘‘‘添加地址‘‘‘
        # 接收数据
        receiver = request.POST.get(receiver)
        zip_code = request.POST.get(zip_code)
        addr = request.POST.get(addr)
        phone = request.POST.get(phone)
        # 校验数据
        if not all([receiver,addr,phone]):
            return render(request,{errmsg:数据不完整})
        if not re.match(r^1[3|4|5|7|8][0-9]{9}$,phone):
            return render(request,{errmsg:手机格式不正确})
        # 业务处理:地址添加
        # 如果用户已存在默认收货地址,添加的地址不作为默认收货地址,否则作为默认收货地址
        # 获取登录用户对应User对象
        user = request.user
        address = Address.objects.get_default_addr(user)

        if address:
            is_default = False
        else:
            is_default = True

        # 添加地址
        Address.objects.create(user=user,receiver=receiver,zip_code=zip_code,addr=addr,phone=phone,is_default=is_default)
        # 返回应答 刷新页面
        return redirect(reverse(user:address))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读