Python Django-无法设置默认DateTimeField值
当我在django管理站点中保存带有空日期和添加日期字段的表单时,它会在那个里保存空值。我想节省当前时间。以下是代码:Python Django-无法设置默认DateTimeField值,python,django,django-models,django-admin,Python,Django,Django Models,Django Admin,当我在django管理站点中保存带有空日期和添加日期字段的表单时,它会在那个里保存空值。我想节省当前时间。以下是代码: 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 t
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不起作用?Django DateField提供了以下参数:
date = models.DateField(auto_now=True, blank=True, null=True)
date_added = models.DateTimeField(auto_now_add=True, blank=True, null=True)
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.
我发现问题出在django管理员身上。如果我使用这样的代码:
new_event = Event(title="blablah", text="some_text")
new_event.save()
然后使用default=timezone.localtime正确保存日期字段。
django管理员可能试图将空字符串传递给DateField,而不是不接触它并让它执行默认操作。试试datetime.datetime.now.try models.DateTimeFieldDauto\u now\u添加=True@MD.KhairulBasar它也不起作用:好吧,如果我以后使用它,我将无法更改日期-@Qback是的,因为您需要默认值,我想您必须删除字段声明中的null=True,blank=True。但当我不使用它们时,我无法在django admin中保存带有空字段的表单。另外,当我尝试使用blank=True和default=sometext的CharField时,它起了作用。@Qback如果只保留blank=True而不保留null=True,则应该使空字段成为可启用的。对于空字段,将使用默认值。然后它抛出异常。IntegrityError NOT NULL约束失败:news\u event.date。我猜它不接受我提供的数据do DateField。我正在使用时区。现在,仍然不工作。