我在Django 1.8模型中有一个DateField,类似于:
public partial class Product
{
public int ProductID { get; set; }
etc
}
public partial class ProductDescription
{
public int ProductDescriptionID { get; set; }
public string Description { get; set; }
}
当它进入某个表单时,我会找回一个“天真”的对象:
from django.db import models
birth_date = models.DateField()
在调试器中打印birth_date:
birth_date = the_form.cleaned_data['birth_date']
然后,当这个东西保存到数据库时,我收到一个警告,正如文档所承诺的那样:
ipdb> birth_date
datetime.date(2015, 6, 7)
我已经阅读了some articles,我仍然感到困惑。我该怎么办这个日期?
我应该将其转换为DateTime,使其能够识别时区,然后返回日期吗?我应该将模型设为DateTimeField并放弃DateFields吗?这里有什么最佳做法?
答案 0 :(得分:0)
我认为您可以尝试使用make_aware将日期转换为感知格式。来自make_aware django文档:
make_aware(value,timezone = None,is_dst = None)
返回表示与之相同的时间点的知晓日期时间 时区价值,价值是一个天真的日期时间。
这应该修正警告:
from django.utils import timezone
birth_date = timezone.make_aware(the_form.cleaned_data['birth_date'], timezone.get_default_timezone())