Bonjour, je travaille sur un blog app et j'ai un modèle:django automatisé terrain dateTime
class Post(models.Model):
title = models.CharField(max_length=255)
<..>
is_published = models.BooleanField(default=False)
time_publish = models.DateTimeField()
time_edit = models.DateTimeField(auto_now=True)
time_create = models.DateTimeField(auto_now_add=True)
Et je veux définir que, lorsque l'utilisateur définit is_published=True
et .save()
est appelé alors time_publish ferait gagner du temps en cours. Le problème est que je ne sais pas quelle route je devrais prendre. Remplacer .save()
ou faire quelque chose avec des signaux ou quoi? J'apprécierais quelques liens vers Docs. Désolé si c'est dublicable mais je ne savais pas comment la question d'une telle matière devrait être nommée.
Mise à jour:
Ainsi, grâce à Manji i produisais ce code qui fonctionne:
def save(self, *args, **kwargs):
if self.pk is not None:
orig = Post.objects.get(pk=self.pk)
if not orig.time_publish and self.is_published:
self.time_publish = datetime.now()
elif not self.is_published:
self.time_publish = None
super(Post, self).save(*args, **kwargs)
Vous pouvez également définir 'blanc = True, null =' true' pour time_published' si elle va seulement être mis sous condition par 'save()'. –
@Shawn Chin, déjà fait :) merci de remarquer – JackLeo