Périodes SlugField de Django
-
26-09-2019 - |
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
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