Django 的 SlugField 中的周期

发布于 2024-09-01 22:42:45 字数 793 浏览 3 评论 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 安装成功,没有任何错误。当我登录管理员并查看项目模型时,我可以看到 SlugField slug_code 包含 TIDE.024,但是当我更改 slug_code 时code> 字段说 TIDE.025 管理员会生成以下错误:

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

Configuration

  • Django v1.1.1
  • PyYAML v3.09

Question

  • Why can data loaded via the initial_data.yaml fixture populate a SlugField with a slug containing a period and not generate an error?

Code

Here's an excerpt of the model:

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

Here's the applicable initial_data.yaml excerpt:

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

The yaml fixture initial_data.yaml is installed without any errors. When I log into the Admin and look at the Project model, I can see that the SlugField slug_code contains TIDE.024, but when I change the slug_code field to say TIDE.025 the Admin generates the following error:

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

Configuration

  • Django v1.1.1
  • PyYAML v3.09

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

○愚か者の日 2024-09-08 22:42:45

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

The value in the SlugField is only checked in forms, not in the database.

故事还在继续 2024-09-08 22:42:45

如果您想禁止字段中的非法字符,您始终可以添加自定义函数。

像这样的东西:

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)

You can always add a custom function if you want to forbid illegal characters from your field.

Something like:

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)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文