0

问题

  • 为什么通过initial_data.yaml夹具加载的数据可以使用包含句点的 slug 填充 SlugField 而不会产生错误?

代码

这是模型的摘录:

class Project(models.Model):
    slug_code = models.SlugField(max_length=15)

这是适用的initial_data.yaml摘录:

- model: myapp.project
  pk: 1
  fields:
    slug_code: TIDE.024

yaml 夹具initial_data.yaml安装没有任何错误。当我登录 Admin 并查看 Project 模型时,我可以看到 SlugFieldslug_code包含TIDE.024,但是当我更改slug_code字段以说TIDE.025Admin 生成以下错误时:

Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.

配置

  • Django v1.1.1
  • PyYAML v3.09
4

2 回答 2

4

中的值SlugField仅在表单中检查,而不在数据库中检查。

于 2010-05-13T14:10:13.613 回答
0

如果您想禁止字段中的非法字符,您可以随时添加自定义功能。

就像是:

def save(self, *args, **kwargs):
    import re
    if re.search(r"[^-\w]",self.slug_field):
        raise Exception("This value can only contain letters, numbers, underscores, and dashes.")
    super(self, Project).save(*args, **kwargs)
于 2010-05-13T16:46:40.793 回答