Периоды в Слагфилде Джанго - PullRequest
0 голосов
/ 13 мая 2010

Вопрос

  • Почему данные, загруженные с помощью устройства initial_data.yaml, могут заполнить 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

Ответы [ 2 ]

4 голосов
/ 13 мая 2010

Значение в SlugField проверяется только в формах, а не в базе данных.

0 голосов
/ 13 мая 2010

Вы всегда можете добавить пользовательскую функцию, если хотите запретить недопустимые символы в своем поле.

Что-то вроде:

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