首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django:删除/删除插件

Django:删除/删除插件
EN

Stack Overflow用户
提问于 2019-01-26 06:29:55
回答 1查看 436关注 0票数 1

我正在处理的问题是格式错误“输入由字母、数字、下划线或连字符组成的有效'slug‘”。

以下是我的表单字段验证:

代码语言:javascript
复制
def clean_slug(self):
        slug = self.cleaned_data['slug']
        if slug.endswith('/'):
            self.cleaned_data['slug'] = slug[:-1]
        slug_check = self.organizer.events.filter(slug=slug).exclude(pk=self.event.pk).exists()
        if slug_check:
            raise forms.ValidationError(_("Slug already exists"), code='duplicated_slug')
        return slug

不知怎么的,当is_valid()被调用时,Django并没有考虑我的self.cleaned_data['slug'] = slug[:-1]。你知道为什么吗?

EN

回答 1

Stack Overflow用户

发布于 2019-01-26 12:14:34

您正在修改cleaned_data['slug'],这将不会产生任何影响。Django将使用您从该方法返回的内容,而您返回的是原始的(未修改的) slug。从documentation

此方法的返回值将替换cleaned_data中的现有值,因此它必须是来自cleaned_data的字段的值(即使此方法没有更改它)或新清理的值。

将其更改为:

代码语言:javascript
复制
def clean_slug(self):
    slug = self.cleaned_data['slug']
    if slug.endswith('/'):
        slug = slug[:-1]  # <-- Modify slug, not cleaned_data['slug']
    slug_check = self.organizer.events.filter(slug=slug).exclude(pk=self.event.pk).exists()
    if slug_check:
        raise forms.ValidationError(_("Slug already exists"), code='duplicated_slug')
    return slug  # <-- return modified value
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54373652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档