当我在 django-admin 网站中使用空 date
和date_added
字段保存表单时,它会在那里保存空值。我想节省当前时间。这是代码:
from django.db import models
import datetime
from django.utils import timezone
# Create your models here.
class Event(models.Model):
def __str__(self):
return self.title
title = models.CharField(max_length=300)
date = models.DateField(default=datetime.date.today, blank=True, null=True)
date_added = models.DateTimeField(default=timezone.localtime, blank=True, null=True)
text = models.TextField()
class EventPhoto(models.Model):
event_id = models.ForeignKey(Event, on_delete=models.CASCADE)
photo = models.ImageField(upload_to='news/')
为什么default=timezone.localtime
不起作用?
答案 0 :(得分:1)
Django DateField
为此提供了auto_now_add
和auto_now
个参数:
date = models.DateField(auto_now=True, blank=True, null=True)
date_added = models.DateTimeField(auto_now_add=True, blank=True, null=True)
答案 1 :(得分:0)
timezone.localtime
是转换函数,而不是值,这就是它无法使用的原因。
Help on function localtime in module django.utils.timezone:
localtime(value, timezone=None)
Converts an aware datetime.datetime to local time.
Local time is defined by the current time zone, unless another time zone
is specified.
答案 2 :(得分:0)
我已经发现,问题在于 django-admin 。如果我使用这样的代码:
new_event = Event(title="blablah", text="some_text")
new_event.save()
然后使用DateField
正确保存default=timezone.localtime
。
可能 django-admin 尝试将空字符串传递给DateField
,而不是触及它并让它采取默认操作。