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.
答案 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)