我們有一個設定創建和修改欄位的基本模型:
class BaseModel(models.Model):
created = models.DateTimeField(_('created'), auto_now_add=True)
modified = models.DateTimeField(_('modified'), auto_now=True)
... other default properties
class Meta:
abstract = True
我們使用這個類來擴展我們的模型:
class Event(BaseModel):
創建新事件時,有沒有辦法覆寫創建的日期?
這是我們代碼的精簡版。我們正在發送一個包含在我們的請求負載中創建的時間戳的事件物件陣列。將物件添加到資料庫后,創建的屬性設定為 now 而不是有效負載中的值。
我想仍然從 BaseModel 擴展,因為代碼的其他區域可能沒有顯式設定創建的值,在這種情況下它應該默認為現在。
events = []
for e in payload['events']:
event = Event(
created=datetime.datetime.fromisoformat(e['created'])
name='foo'
)
events.append(event)
Event.objects.bulk_create(events)
uj5u.com熱心網友回復:
您可以使用以下方法覆寫模型的created欄位Event:
from django.utils.timezone import now
class Event(BaseModel):
created = models.DateTimeField(default=now)
如果您不希望默認情況下顯示ModelForms 和ModelAdmins,則可以使用editable=False[Django-doc]:
from django.utils.timezone import now
class Event(BaseModel):
created = models.DateTimeField(default=now, editable=False)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/364050.html
上一篇:如何使用SpringBoot從POST方法回傳物件?
下一篇:DjangoShell更新物件值
