我已经为一个项目组装了一个基本的 CMS 系统,并且我正在添加一个订单系统,以便您可以在导航栏中对创建的页面进行排序。不幸的是,我编写的自定义验证器有点激进,并且在您编辑页面时会引发错误,因为正确地,该订单已经存在于数据库中。
表单基于的模型:
class Page(models.Model):
page_name = models.CharField(max_length=100)
page_content = models.CharField(max_length=16777000)
link = models.URLField(blank=True)
order = models.IntegerField()
自定义验证器:
def clean_order(self):
data = self.cleaned_data['order']
pg = Page.objects.filter(order=data)
if pg.count() > 0:
raise forms.ValidationError("This order number already exists. Use another.")
return data
在执行更新时,我有什么办法让自定义验证器仅在新订单已经存在但不是当前页面对象的情况下引发错误。就像是:
pg = Page.objects.filter(order=data).filter(pk!=editpagepk)
谢谢!