django-stdfields est une application Django qui fournit les champs auteur souhaits étaient standard dans Django. & Nbsp; Pour le moment ce est limité à la MinutesField, EnumIntegerField et EnumCharField.
Sommaire
- Stdfields.forms.MinutesField: utiliser un entier pour représenter une durée de minutes et les heures
- Stdfields.fields.EnumIntegerField: permet de travailler avec des choix un peu plus facile
- Stdfields.fields.EnumCharField: le même, mais pour des choix avec une clé char
MinutesField
Est une extension de la norme django.forms.IntegerField de Django.
Ce champ accepte les valeurs pour une durée en minutes dans les formats hh: mm ou h.fraction, semblable à la façon dont BaseCamp vous permet de spécifier votre temps passé sur une tâche que soit 08h30 ou 8,5. Dans ce dernier cas seulement 8,25, 8,5, 8,50 et 8,75 sont considérés comme des entrées valides.
Exemple
Les actions parlent plus que les mots:
# Models.py
Groupe classe (models.Model):
& Nbsp; time_spent = models.IntegerField ()
# Forms.py
de stdfields.forms importer MinutesField
à partir de modèles d'importation Groupe
classe TaskForm (forms.ModelForm):
& Nbsp; time_spent = MinutesField (label = '? Combien de temps at-il fallu')
& Nbsp; Meta de classe:
& Nbsp; modèle = Tâche
Vous pouvez utiliser le filtre minutes de modèle à partir stdfieldstags de rendre un tel champ dans le format 08:30:
{% Stdfieldstags% de charge}
Il m'a fallu {{task.time_spent |}} minutes pour effectuer cette tâche.
Enumeration
Je finis toujours avec le code laid quand en utilisant l'argument de choix pour les champs de Django. Avec la classe stdfields.models.Enumeration, je ai une classe de base à portée de main qui me permet de garder les choses en ordre:
# Models.py
classe Couleur (Enumeration):
& Nbsp; ROUGE = 'R'
& Nbsp; VERT = 'G'
& Nbsp; BLEU = 'B'
& Nbsp;classmethod
& Nbsp; def tous (CLS):
& Nbsp; retourner [
& Nbsp; (cls.RED, _ (u'Red ')),
& Nbsp; (cls.GREEN, _ (u'Green ')),
& Nbsp; (cls.BLUE, _ (u'Blue '))
& Nbsp;]
classe Crayon (models.Model):
& Nbsp; color = models.CharField (choix = Color.all (), max_length = Color.max_length ())
# Views.py
red_pencils def (demande):
& Nbsp; crayons = Pencil.objects.filter (color = Color.RED)
& Nbsp; ...
& Nbsp; # Prints 'Showing les crayons rouges'
& Nbsp; logging.info ('Showing les crayons de l'% de la% (Color.as_display (Color.RED)))
EnumCharField et EnumIntegerField
Et maintenant, nous pouvons faire travailler avec une énumération plus facile avec les modèles champs EnumCharField et EnumIntegerField:
# Models.py
classe Couleur (Enumeration):
& Nbsp; # même que ci-dessus
classe Crayon (models.Model):
& Nbsp; color = models.EnumCharField (enum = couleur, max_length = Color.max_length ())
Cet exemple est essentiellement le même que ci-dessus depuis EnumCharField est une sous-classe de la CharField Django régulier. En utilisant l'énumération argument mot-clé du champ d'énumération, les choix seront automatiquement mis à jour lorsque vous mettez à jour l'objet de dénombrement. Et puisque vous utilisez la méthode de max_length fourni d'énumération, le max_length sera mis à jour si nécessaire. Tout comme dans l'exemple précédent. Les champs d'énumération offrent simplement un peu plus de clarté lors de la lecture du code.
EnumIntegerField fonctionne exactement de la même chose, mais pour les énumérations avec des clés entières. . Les deux champs peuvent être utilisés avec le Sud
Exigences :
- Python
- Django
Commentaires non trouvées