Cela ne devrait pas être un champ du tout. Au lieu de créer un modèle, qui référence votre modèle principal à l'aide d'un ForeignKey:
class YourModel(models.Model):
name = models.CharField(max_length=100)
class YourModelUpdateHistory(models.Model):
your_model = models.ForeignKey('YourModel')
updated = models.DateTimeField()
De cette façon, vous pouvez avoir plusieurs dates pour chaque modèle, tout en gardant la base de données correctement normalisée. Il vous permettra également dans le futur d'ajouter des champs supplémentaires avec d'autres informations sur chaque mise à jour (par exemple, qui a mis à jour l'objet). Vous devez créer un objet YourModelUpdateHistory
chaque fois que vous mettez à jour un objet YourModel
. Vous pouvez même le configurer de sorte cela se fait automatiquement, grâce à la méthode save()
(ce qui est appelé par Django chaque fois que vous enregistrez un objet):
from django.utils import timezone
class YourModel(models.Model):
name = models.CharField(max_length=100)
def save(self, *args, **kwargs):
super(YourModel, self).save(*args, **kwargs)
YourModelUpdateHistory.objects.create(your_model=self, updated=timezone.now())
OK Je pense que je l'obtenir - chaque fois que le YourModel est enregistré, puis une nouvelle entrée dans YourModelUpdateHistory est créée avec le datetime actuel, que je peux définir dans la vue lors de l'enregistrement de la mise à jour? –
J'ai mis à jour mon article, avec un exemple de création automatique de modèles YourModelUpdateHistory, chaque fois que YourModel est mis à jour. –
Merci! Je vais mettre à jour ce soir quand je rentre à la maison –