Django: Naïf datetime tandis que le temps de la zone de support est actif (sqlite)

Je vais tourner en rond sur ce sur et besoin d'un peu d'aide. Je continue à mettre un naive timezone avertissement. Pas sûr de ce que je fais de mal! Arg.

Voici l'avertissement:

/django/db/models/fields/__init__.py:1222: RuntimeWarning: DateTimeField Video.modified received a naive datetime (2014-10-07 00:00:00) while time zone support is active.
  RuntimeWarning)

Voici le code du modèle (expurgé un peu):

from django.db import models
from django.utils import timezone

class ItemBase(models.Model):
    created = models.DateTimeField(editable=False)
    modified = models.DateTimeField(editable=False)

    class Meta:
        abstract = True

    def save(self, *args, **kwargs):
        """Updates timestamps on save"""
        if not self.id:
            self.created = timezone.now()
        self.modified = timezone.now()
        return super(ItemBase, self).save(*args, **kwargs)

class Video(ItemBase):
    pass

Et pertinents (je pense) une partie de mon fichier de paramètres:

TIME_ZONE = 'UTC'
USE_TZ = True

Est-ce un sqlite question (je suis encore à tester des choses)? Ou ai-je raté quelque chose de fondamental ici? J'ai lu sur elle ici et ici et, bien sûr, à l'docs ici. Mais je suis perplexe. Merci.

edit: ajout test qui génère l'erreur

Obtiens l'erreur quand je lance mes tests ... j'ai laissé la expurgée des trucs là, mais vous devriez obtenir l'idée:

from django.test import TestCase
from django.contrib.auth import get_user_model

from video.models import Video, VideoAccount

class VideoTestCase(TestCase):

    def setUp(self):
        user = get_user_model().objects.create_user(
            username='jacob', email='[email protected]', password='top_secret')
        self.video_account = VideoAccount.objects.create(
            account_type=1, account_id=12345, display_name="Test Account" )
        self.pk1 = Video.objects.create(video_type=1, video_id="Q7X3fyId2U0",
            video_account=self.video_account, owner=user)

    def test_video_creation(self):
        """Creates a video object"""
        self.assertEqual(self.pk1.video_id, "Q7X3fyId2U0")
        self.assertEqual(self.pk1.video_link, "https://www.youtube.com/watch?v=Q7X3fyId2U0")
lorsque vous obtenez cette erreur
quand je suis en création d'un nouveau modèle dans mon test de la suite - désolé, je crois que j'aurais compris que ... je peux ajouter que, dans le fond! ... et, je ne vois pas qui d'avertissement dans le serveur de développement lorsque j'ajoute une aide de l'admin ... seulement lors de l'exécution des tests.
supprimer USE_TZ = True, ce qui pourrait résoudre votre problème.
il n'est certainement supprimer l'avertissement, mais je veux le fuseau horaire de soutien! Donc mon problème n'est pas encore fixé. Sourire.
Ce que vous avez posté regarde, à droite, de sorte que le problème doit être ailleurs. Puisque vous dites que ça n'arrive qu'avec des tests, essayez TransactionTestCase au lieu de TestCase. Il ne devrait pas, mais elle est en général plus sûr. Publier vos non expurgés le code du modèle, ainsi que le test exact de la commande que vous êtes en cours d'exécution. Avez-vous plusieurs fichiers de configuration?

OriginalL'auteur thornomad | 2014-10-08