gpt4 book ai didi

django - 如何在 Django 管理表单验证器中检测更新

转载 作者:行者123 更新时间:2023-12-01 13:03:28 24 4
gpt4 key购买 nike

我有一个要使用的 Post 模型中字段的自定义验证器在管理界面中,验证器的目的是验证没有其他帖子具有相同的 urlcategory,但我找不到区分更新或新的Post的方法;在这种情况下更新的 post 的存在是没有问题的相同的 url 和类别。

这是验证器:

class MyPostAdminForm(forms.ModelForm):

class Meta:
model = Post

def clean_url(self):
url = self.cleaned_data['url']
# if doesn't have any category then
# just return the url to handle the error.
try:
cat = self.cleaned_data['category']
except KeyError:
return url

if UPDATE: # UPDATE???
#DON'T COMPLAIN IF IS THE SAME, RETURN THE URL
return url
else: # IS NEW!
try:
Post.objects.get(category=cat, url=url)
except Post.DoesNotExist:
return url
else:
raise forms.ValidationError('Already exists post with category "%s" and url "%s"'%(cat, url))

有什么想法吗?

最佳答案

没有必要这样做:如果您在模型的元类中设置 unique_together,管理员将自动验证不存在具有相同组合的其他实例。

但是,要回答一般性问题,判断这是否是更新的方法是检查 self.instance 是否存在并且是否具有 pk 字段的值.

if hasattr(self, 'instance') and self.instance.pk is not None:
#update
else:
#new

关于django - 如何在 Django 管理表单验证器中检测更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4376271/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com