Django的SlugField期间

时间:2010-05-13 14:06:46

标签: django django-models slug

问题

  • 为什么通过initial_data.yaml fixture加载的数据会使用包含句点的段塞填充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 fixture initial_data.yaml时没有任何错误。当我登录管理员并查看项目模型时,我可以看到SlugField slug_code包含TIDE.024,但是当我将slug_code字段更改为TIDE.025时管理员生成以下错误:

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

配置

  • Django v1.1.1
  • PyYAML v3.09

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分: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)