當我使用 DateTimeField 創建和遷移模型時,我可以在我的資料庫中創建一個條目,讓我選擇我想要手動記錄的日期。現在我創建了一個 Post 方法來向我的資料庫添加新條目,但是我如何自動添加一個時間戳,比如 AutoField 'ID' ?
uj5u.com熱心網友回復:
您可以將 DateTimeField 與 auto_now_add 一起使用到您的模型中作為 created_at 欄位,以便在創建物件時進行記錄
https://docs.djangoproject.com/en/3.2/ref/models/fields/#django.db.models.DateField.auto_now_add
例如:
class YourModel(models.Model):
created_at = DateTimeField(auto_now_add=True)
updated_at = DateTimeField(auto_now=True)
uj5u.com熱心網友回復:
要在將物件保存在資料庫中之前自動為其添加值,您可以覆寫模型save()方法或在將表單保存在資料庫中之前提供值form.save(commit=false):
模型.py
class MyModel(models.Model):
name = models.CharField(default='Empty')
date = models.DateTimeField(default=datetime.datetime.now, blank=True)
# Others fields
# Override model save method
def save(self, *args, **kwargs):
# Here you can decide to change the value of a field or add other logic
self.name = 'Overrided name in save method'
super(MyModel, self).save(*args, **kwargs)
視圖.py
def post_view(request):
if request.method == 'POST':
form = MyModelForm(request.POST)
if form.is_valid():
# Don't save yet because we need to provide the date field
my_object = form.save(commit=False)
my_object.date = datetime.datetime.now()
# Now we can save the object in the database
my_object.save()
else:
# If form is not valid
else:
# If request is not POST
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/322039.html
