【问题标题】:Periods in Django's SlugFieldDjango 的 SlugField 中的时期
【发布时间】:2011-02-19 02:55:27
【问题描述】:

问题

  • 为什么通过 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 模型时,我可以看到 SlugField slug_code 包含 TIDE.024,但是当我将 slug_code 字段更改为 TIDE.025 时,Admin 生成以下错误:

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

配置

  • Django v1.1.1
  • PyYAML v3.09

【问题讨论】:

    标签: django django-models slug


    【解决方案1】:

    如果您想禁止字段中出现非法字符,您可以随时添加自定义函数。

    类似:

    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)
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2015-08-05
        • 2015-01-28
        • 2020-01-01
        • 2012-08-02
        • 2021-01-10
        • 2013-08-31
        • 2013-07-03
        • 2019-04-13
        相关资源
        最近更新 更多