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‘)) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- python-3.x – 找不到满足要求mysql-connector-p
- python – tkFileDialog的askopenfilename方法
- 在Python中,不使用/ proc文件系统,如何判断给定的
- python – 在numpy中有多个排序键的Sortrows
- python – Cumsum作为现有Pandas数据中的新列
- python – 在pandas中的行到列
- 使用python igraph标记图形中的边缘
- C#风靡一时的编程语言和现在最火编程语言Python!
- Python时间模块datetime、time、calendar的使用方
- Python学习笔记之open()函数打开文件路径报错问题
热点阅读