Как изменить формат ввода времени в административном интерфейсе? - Python

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Я совсем только начал осваивать django и у меня возник вопрос. Предположим есть модель которая описывает новость.
Листинг программы
  1. class News(models.Model):
  2. title = models.CharField(max_length=255)
  3. lead = models.CharField(max_length=255)
  4. text = models.TextField()
  5. status = models.BooleanField()
  6. ptime = models.BigIntegerField()
  7. ctime = models.BigIntegerField(editable=False)
  8. mtime = models.BigIntegerField(editable=False)
  9. version = models.IntegerField()
сtime - это время создания новости. должно оно храниться в unixtime и проставляться автоматически при создании новости. mtime - время модификации (последней). тоже в unixtime. и тоже автоматом должно проставляться при изменении новости. ptime - это время публикации новости. хранится оно в unixtime. но живому человеку не удобно ставить даты в unixtime в административном интерфейсе. Собственно вопрос, как изменить поведение? Читал про создание своих моделей, но не уверен что именно так надо делать. Как вообще такие вещи принято реализовывать? Спасибо.
О! пришла в голову мысль. Коли уж это всего лиш питонический класс то я могу по сути просто взять и переопределить save. Но не уверен что это бестпрактик.

Решение задачи: «Как изменить формат ввода времени в административном интерфейсе?»

textual
Листинг программы
  1. from django.db import models
  2. from lib.db import mymodels
  3.  
  4.  
  5. class News(models.Model):
  6.     url = models.SlugField(max_length=255, unique=True)
  7.     title = models.CharField(max_length=255)
  8.     lead = models.CharField(max_length=255)
  9.     text = models.TextField()
  10.     ptime = mymodels.UnixTimeField()
  11.     ctime = mymodels.UnixTimeField(editable=False,auto_now_add=True)
  12.     mtime = mymodels.UnixTimeField(editable=False,auto_now=True)
  13.     version = models.IntegerField(default=1, editable=False)
  14.     status = models.BooleanField()
  15.  
  16.  
  17.     def __unicode__(self):
  18.         return '%s %s' % (self.title, self.lead)
  19.        
  20.     def save(self, *args, **kwargs):
  21.         if self.id:
  22.             self.version += 1
  23.  
  24.         return super(News, self).save(*args, **kwargs)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы