我已经为一个项目构建了一个基本的 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
我有什么办法可以在执行更新时让自定义验证器只在新订单已经存在但不是当前 Page 对象的情况下引发错误。像这样的东西:
pg = Page.objects.filter(order=data).filter(pk!=editpagepk)
谢谢!
最佳答案
使用 exclude方法,像这样:
pg = Page.objects.filter(order=data).exclude(pk=self.instance.pk)
关于python - Django:检查对象是否存在但不是对象的当前实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14761528/