列表页面:/depart/数字/edit/
URL:
函数:
- 跟据ID获取当前对象
- ModelForm配合,默认显示数据
- 提交修改
class PrettyEditModelForm(forms.ModelForm):
mobile = forms.CharField(disabled=True, label="手机号")
'不可改的手机号'
class Meta:
model = models.PrettyNum
fields = ["mobile", "price", "level", "status"]
# 保留bootstrap的格式
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
for name, field in self.fields.items():
field.widget.attrs = {"class": "form-control", "placeholder": field.label}
def pretty_edit(request, nid):
row_object = models.PrettyNum.objects.filter(id=nid).first()
if request.method == "GET":
form = PrettyEditModelForm(instance=row_object)
return render(request, "pretty_edit.html", {"form": form})
form = PrettyEditModelForm(data=request.POST,instance=row_object)
if form.is_valid():
form.save()
return redirect("/pretty/list/")
return render(request, "pretty_edit.html", {"form": form})
不允许手机号重复:
添加:【正则表达式】【手机号不能重复】
# 不能重复
def clean_mobile(self):
txt_mobile = self.cleaned_data["mobile"]
exists = models.PrettyNum.objects.filter(mobile=txt_mobile).exists()
if exists:
raise ValidationError("手机号已存在")
return txt_mobile
编辑:【正则表达式】
排除自己以外的其他的数据中,手机号是否存在?
# 不能重复
def clean_mobile(self):
txt_mobile = self.cleaned_data["mobile"]
exists = models.PrettyNum.objects.exclude(id=self.instance.pk).filter(mobile=txt_mobile).exists()
# pk 主键
# instance 当前数据
# 也就是说主键不同,但是电话号码相同
if exists:
raise ValidationError("手机号存在重复")
return txt_mobile
删除靓号:
def pretty_delete(request, nid):
models.PrettyNum.objects.filter(id=nid).delete()
return redirect('/pretty/list/')