Если мое перечисление имеет шанс того, чтобы когда-нибудь быть используемым вне класса, я намереваюсь использовать его, я создаю отдельный исходный файл для перечисления. Иначе я помещу его в классе, я намереваюсь использовать его.
Создайте DateTimeField
в своей модели. Обновляйте его при каждом сохранении. Для этого необходимо использовать параметр auto_now_add
:
class DateTimeField([auto_now=False, auto_now_add=False, **options])
DateTimeField.auto_now_add¶
Автоматически устанавливать для поля значение «сейчас» каждый раз при сохранении объекта. Полезный для отметок времени "последнего изменения". Запись что всегда используется текущая дата; это не просто значение по умолчанию, которое вы
Это должно выглядеть примерно так:
class Message(models.Model):
message = models.TextField()
active = models.BooleanField(default=True)
created_at = models.DateTimeField(auto_now_add=True)
Для второй части, я думаю, вам придется перегрузить
ModelAdmin.save_model(self, request, obj, form, change)
Как Джеймс Беннетт описывает здесь . Это будет выглядеть примерно так:
class EntryAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
if change:
obj.change_count += 1
obj.save()
Есть несколько способов увеличить количество изменений при каждом сохранении.
Сама модель имеет метод save (), а модель администратора имеет метод model_save ().
Так, например, предположим, что вы хотите, чтобы он увеличивался, когда он был отредактирован с помощью инструмента администратора ....
models.py:
class MyModel(models.Model):
edit_count = models.IntegerField()
# ... rest of model code here...
admin.py:
class MyModelAdmin(admin.ModelAdmin)
def save_model(self, request, obj, form, change):
if not change:
obj.edit_count = 1
else:
obj.edit_count += 1
obj.save()
Вы можете сделать аналогичный код и для события save () модели.
Что-то еще вас может заинтересовать django-command-extensions . Он добавляет 2 поля, которые могут быть вам полезны:
CreationDateTimeField - DateTimeField, который автоматически устанавливает дату при первом сохранении объекта в базе данных.
ModificationDateTimeField - DateTimeField, который автоматически устанавливает дату при сохранении объекта в базе данных.