Di django - apakah ada bidang cap waktu default untuk semua objek? Yaitu, apakah saya harus secara eksplisit menyatakan bidang 'stempel waktu' untuk 'dibuat pada' di Model saya - atau adakah cara untuk mendapatkannya secara otomatis?
90
model_utils
untuk Django yang sudah berisiTimeStampedModel
, tetapi jika anda tidak memerlukan apapun dari paket ini, simpan saja tanpa bobot ekstra.created
danupdated
. Ini adalah cara yang bagus untuk melakukannya dengan bersih.Jika Anda menggunakan django-extensions (yang merupakan aplikasi bagus untuk menambahkan fungsionalitas ke baris perintah django-admin.py) Anda bisa mendapatkan bidang model ini secara gratis dengan mewarisi dari TimeStampedModel mereka atau menggunakan bidang TimeStamp kustom mereka
sumber
Anda dapat mencoba django-extensions
jika Anda ingin menggunakan model abstrak cap waktu
from django_extensions.db.models import TimeStampedModel class A(TimeStampedModel): ...
Ini memiliki model abstrak lainnya. Anda bisa menggunakannya juga.
sumber
Jika Anda ingin dapat mengubah bidang ini, setel yang berikut ini sebagai ganti
auto_now_add=True:
Untuk Tanggal
from datetime import date models.DateField(default=date.today)
Untuk DateTime
from django.utils import timezone models.DateTimeField(default=timezone.now)
sumber
Saya pikir saya akan pergi dengan
created = models.DateTimeField(auto_now_add=True) updated = models.DateTimeField(auto_now=True)
Saya membutuhkan beberapa klarifikasi tentang penggunaan
class TimeStampedModel(models.Model): created_on = models.DateTimeField(auto_now_add=True) class Meta: abstract = True
sumber