J'ai un modèle Django appelé J'aimerais ajouter un champ à mon modèle actuel qui est pour Last_Modified_date. Je sais comment définir une valeur par défaut, mais je voudrais d'une manière ou d'une autre pour que cela soit mis à jour automatiquement à chaque fois que je modifie l'entrée de blog via l'interface d'administration. p>
Y a-t-il un moyen de forcer cette valeur à l'heure actuelle de chaque site d'administration? P>
Il y aurait également un moyen d'ajouter un champ blog code>. p>
mod_count code> et de l'avoir calculé automatiquement sur chaque modification de l'entrée de blog de site admin? p>
4 Réponses :
Créer un DateTimefield code> dans votre modèle. Avoir la mise à jour chaque fois que cela est enregistré. Cela nécessite que vous utilisiez l'option
auto_now_add code>:
class EntryAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
if change:
obj.change_count += 1
obj.save()
Merci, connaissez-vous un moyen d'incrémenter automatiquement un numéro de 1 sur chaque sauvegarde?
Oui, je pense que vous devez surcharger le modèle.Save () pour faire l'incrément pendant la sauvegarde. James Bennett a un article à ce sujet à B-List.org, comme je me souviens. Son article a eu à faire avec la sauvegarde de l'utilisateur actuel sur un enregistrement de l'interface administrative. Je n'ai pas encore trouvé l'article ....
Depuis au moins 1,4, les «horodatages utiles» «utiles». Remarque est sur auto_now code> plutôt que
auto_now_add code>. Ce dernier n'utilisera que l'heure actuelle sur la création, non mise à jour.
Il y a un certain nombre de façons d'augmenter le nombre d'édition à chaque enregistrement.
Le modèle lui-même a une méthode Save () et le modèle d'administration a une méthode modèle_save (). p>
Ainsi, par exemple, disons que vous vouliez qu'il s'agisse d'augmenter quand il a été édité avec l'outil Admin .... p> Vous pouvez faire du code similaire éteint de l'événement Model Save () également. p> Quelque chose d'autre, vous pouvez être intéressé par IS Extensions Django-Command . Il ajoute 2 champs qui peuvent vous être utiles: p> CreationDateTimeMefield - DateTimefield qui définira automatiquement la date à laquelle l'objet est enregistré pour la première fois dans la base de données. p> li>
ModificationDateTimefield - DateTimeField définira automatiquement la date de sa date lorsqu'un objet est enregistré dans la base de données. P> LI>
ul> p>
Pouvez-vous me signaler à la documentation indiquant AUTO_NOW_ADD est obsolète? Aussi récemment que 2008-06-15, cette affirmation a été refusée: «Je ne sais pas qui est anonyme, mais auto_now_add n'a pas encore été obsolète. Il a été discuté de dépréciation et il y a une meilleure façon (par défaut = DateTime .now), mais pour le moment, auto_now_add est toujours une option valide. " code.djangoproject.com/ticket / 7390
J'ai copié la description du champ de la page du projet d'application Django-Command-Extensions. Vous devriez parler avec eux à propos de cette affirmation.
Pour ne pas propager mal-information juste au cas où i>, j'ai supprimé cela de mon texte collé.
Vous pouvez également utiliser une solution middleware trouvée ici: https://bitbucket.org/amenasse/django-current-user/src/7C3C90C8F5E854FEDCB04479D912C1B9F6F2A5B9/CURrent_USER?AT=Default
La réponse acceptée n'est plus correcte.
Pour les versions Django plus récentes, vous devrez utiliser le paramètre du Documentation : P> datefield.auto_now_add¶ p>
Définissez automatiquement le champ pour maintenant quand le
objet est créé pour la première fois. Utile pour la création d'horodatages. P>
blockQuote> La fonctionnalité souhaitée est maintenant implémentée par datefield.auto_now nous p>
Définissez automatiquement le champ pour maintenant chaque fois que la
objet est enregistré. p>
blockQuote> afin d'obtenir un horodatage auto-mis à jour, un modèle doit être créé comme suit: p> à augmenter auto_now = true code> plutôt que le
auto_now_add = true code>, Ce qui ne fera que définir la valeur du champ lorsque l'objet est initialement créé. p>
auto_now code>: p>
mod_count code> chaque modèle La surcharge modifiée est modifiée la méthode
(code> ) du modèle: p>