Question

Question

  • Pourquoi les données chargées via l'appareil initial_data.yaml alimenter un SlugField avec une limace contenant une période et ne génère pas une erreur?

code

Voici un extrait du modèle:

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

Voici l'extrait de initial_data.yaml applicable:

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

Le luminaire yaml initial_data.yaml est installé sans aucune erreur. Lorsque je me connecte à l'administrateur et de regarder le modèle de projet, je peux voir que le slug_code SlugField contient TIDE.024, mais quand je change le champ slug_code dire TIDE.025 l'administrateur génère l'erreur suivante:

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

Configuration

  • Django v1.1.1
  • PyYAML v3.09
Était-ce utile?

La solution

La valeur du SlugField est vérifiée uniquement dans les formes, et non dans la base de données.

Autres conseils

Vous pouvez toujours ajouter une fonction personnalisée si vous voulez interdire des caractères illégaux de votre champ.

Quelque chose comme:

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)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top