Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Django] models.DateTimeField(auto_now_add=True)

Souci avec python manage.py makemigrations

Sujet résolu
    23 novembre 2014 à 17:53:54

    Bonsoir,

    J'ai un souci avec la création de ma class sous Django 1.7 (configuré avec Python 3.4). J'ai une classe qui me semble classique, en suivant le tuto sur OpenClassrooms : http://openclassrooms.com/courses/developpez-votre-site-web-avec-le-framework-django et un bouquin que j'ai acheté mais je bloque et aucun ne parle vraiment de la propriété DateField et DateTimeField.

    Donc ci-après ma class toute simple pour créer la table:

    class Publisher(models.Model):
        name = models.CharField(max_length=150)
        slug = models.CharField(max_length=150)
        added = models.DateTimeField(auto_now_add=True)
        edited = models.DateTimeField(auto_now=True)
    
        def __str__(self):
    	    return self.name
    

    Ensuite j'execute python manage.py makemigrations sauf que voilà ce que ça me dit : You are trying to add a non-nullable field 'added' to collection without a default; we can't do that (the database needs something to populate existing rows). Please select a fix: 1) Provide a one-off default now (will be set on all existing rows) 2) Quit, and let me add a default in models.py

    Je ne comprends pas ce que je dois faire. Il me semblait que auto_now_add=True et auto_now=True étaient là pour ça... J'ai cherché sur google mais soit les stackoverflow sont trop complexes pour ma compréhension encore toute relative de Django, soit c'est hors sujet.

    Merci d'avance pour l'explication de ce bug et éventuellement la façon de le résoudre.

    Bonne soirée,

    • Partager sur Facebook
    • Partager sur Twitter
    When I get sad, I stop being sad and be awesome instead !
      24 novembre 2014 à 14:10:12

      Je poste la réponse au cas où un autre newbie aurait le souci. C'est dû au fait que j'ai fait une modification de ma class alors qu'elle existait déjà et contenait des entrées. Le default value était donc demandé pour les entrées existantes dans la bdd. J'ai donc virer les entrées et ai recommencé les migrations. Aucun souci !

      • Partager sur Facebook
      • Partager sur Twitter
      When I get sad, I stop being sad and be awesome instead !

      [Django] models.DateTimeField(auto_now_add=True)

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown