如何修复RuntimeWarning:DateTimeField收到了一个天真的>时区支持处于活动状态时的日期时间?

时间:2017-07-02 14:24:38

标签: django datetime django-views

完全追溯

  

C:\用户\ P.A.N.D.E.M.I.C \桌面\ TD11 \ lib中\站点包\ django的\分贝\模型\ fields__init __ PY:1451:   RuntimeWarning:DateTimeField UserProfile.key_expires收到了一个天真的   datetime(2017-07-04 14:18:43),而时区支持处于活动状态   RuntimeWarning)

这是我的userprofile模型

class UserProfile(models.Model):
    user                                        = models.OneToOneField(User, on_delete=models.CASCADE)
    slug                                        = models.SlugField(unique=False, default=None, blank=True) 
    activation_key                              = models.CharField(max_length=90, default=None, blank=True)
    key_expires                                 = models.DateTimeField(default=None)

这是视图

profile = UserProfile.objects.create(
                user=user,
                slug=username,
                key_expires=datetime.datetime.strftime(timezone.now() + datetime.timedelta(days=2), "%Y-%m-%d %H:%M:%S"),
                activation_key=get_secret_key
                )

1 个答案:

答案 0 :(得分:2)

当时区支持处于活动状态时,您确实应该使用timezone.now()。 但是不需要用字符串初始化DateTimeField,Django将直接处理datetime对象。

因此,要保持tz感知日期时间,您应该写:

from django.utils import timezone

profile = UserProfile.objects.create(
    user=user,
    slug=username,
    key_expires=timezone.now() + datetime.timedelta(days=2),
    activation_key=get_secret_key
)