0
votes

full traceback

C:\Users\P.A.N.D.E.M.I.C\Desktop\td11\lib\site-packages\django\db\models\fields__init__.py:1451: RuntimeWarning: DateTimeField UserProfile.key_expires received a naive datetime (2017-07-04 14:18:43) while time zone support is active.
RuntimeWarning)

this is my userprofile model

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)

this is view

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

1 Answers

2
votes

When timezone support is active, you should indeed use timezone.now(). But initializing DateTimeField with a string is not required, Django will handle datetime objects directly.

So, to keep a tz-aware datetime, you should write:

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
)