2015-07-27 1 views
0

Dans l'un de mes modèles django, j'ai un champ comme celui-ci:comment gérer un champ 'auto-now' dans un formulaire django?

modified = models.DateTimeField(auto_now=True) 

Je pensais que, lors de la création d'un ModelForm pour ce modèle, je pouvais sauter ce champ, et Django peupleraient automatiquement.

Mon ModelForm:

class FooForm(forms.ModelForm): 
    class Meta: 
     model = Foo 
     fields = ['text', 'name', 'description'] # notice - modified field not included - 
      # should not be shown to the user 

Mais, même si elle ne se présente pas sous la forme, lors de la présentation, lors de la création d'un nouvel objet, je me suis une exception:

IntegrityError at /url/ - null value in column "modified" violates not-null constraint 

Comment puis-je faire ce travail?

+0

L'excluez-vous dans votre modèle? ou est-il montré à l'utilisateur? – Sayse

+1

Vous devrez fournir plus de détails - modèle, vue, formulaire, etc. Il ne devrait jamais y avoir de valeur nulle dans ce champ pour commencer, donc quelque chose est impair. –

+1

Est-ce que cela se produit lorsque vous créez un objet? Ensuite, vous devez également définir 'auto_now_add' sur' True'. –

Répondre

1

Le champ auto_now n'est pas remplie automatiquement dans ce cas.

Vous devez utiliser auto_add_now, de sorte que la définition du champ ressemble à ceci:

modified = models.DateTimeField(auto_now_add=True) 

Ensuite, django ajoutera automatiquement la date si le champ n'apparaît pas.

0

Vous avez juste besoin de fournir une valeur par défaut au champ. Cela peut se faire comme suit:

from datetime import datetime 
modified = models.DateTimeField(default=datetime.now)