2011-07-25 4 views
3

使用:Djangoのインポート日時

こんにちはでのチュートリアル次のPython 2.7

  • 、私はPythonの初心者だけど、 PHPのバックグラウンドから来ているので、愚かな質問であれば謝罪します。私はp.was_published_today()を呼び出そうとしたときについてきています。これは、このエラーを出力します

    Traceback (most recent call last): 
        File "<console>", line 1, in <module> 
        File "/path/to/mysite/polls/models.py", line 12, in was_published_today 
        pub_date = models.DateTimeField('date published') 
    NameError: global name 'datetime' is not defined 
    

    しかし、私は、チュートリアルに従って、それを持っている必要があります正確に(私には)私のmodels.pyルックスのコード:

    from django.db import models 
    import datetime 
    
    # Create your models here. 
    
    class Poll(models.Model): 
        question = models.CharField(max_length=200) 
        pub_date = models.DateTimeField('date published') 
        def __unicode__(self): 
         return self.question 
        def was_published_today(self): 
         return self.pub_date.date() == datetime.date.today() 
    
    # other code but not relevant to the error 
    

    私はここの周りの人を見てきましたこのチュートリアルでは動作していないdatetimeの非常によく似た問題について質問しましたが、それらの答えのどれも私が実際にそれを働かせるのに役立っていませんでした。 Pythonインタプリタでは動作しますが、スクリプトでは動作しません。私は非常に混乱しています&私はこの細部について45分間作業してきました。誰かが手掛かりを持っていますか?

  • 答えて

    8

    ビューでdatetimeをインポートすることを確認してください。追加:

    import datetime 
    

    あなたのViews.pyページに追加します。一度この問題のために開かれたチケットがありました:

    https://code.djangoproject.com/ticket/5668

    +0

    明らかに彼のコードに含まれています。 –

    +2

    これは実際に彼のmodels.pyページですが、エラーは日時モジュールがインポートされていないことを示します。 –

    +4

    ちょっと強調すると、問題は彼が**ビュー**で 'datetime'をインポートする必要があるということです。 –

    5

    は、以下のことを試してみてください。

    from datetime import datetime 
    

    次に、あなたのコードが動作するはずです。 datetimeはパッケージ名で、内部にはdatetimeがあります。

    +0

    'date'は' datetime.datetime'ではなく 'datetime'の属性なので、これはうまくいきません! –

    +1

    あなたは完全に正しいです。私は読むことを学ぶ必要があります。トレースバックを見ると、 'datetime'が既にインポートされているので、意味がないことがより慎重に明らかになります。 –

    +0

    うわー、それはviews.pyに追加したときにうまくいきましたが、models.pyに入れたときはうまくいきませんでした。 models.pyに入っているとき、 'AttributeError: 'method_descriptor'オブジェクトに 'today''属性がないというエラーが出ました。とにかく、ありがとうございました。チュートリアルは本当に言及するか、修正する必要があります。なぜなら、私はviews.pyファイルを編集する必要があるとは思ってもいなかったからです。あなたはおっしゃっています! :-) – Forrest

    4

    あなたは、このいずれかを使用できます。 ゴーリンクDjango Utils Timezone

    from django.utils.timezoneを通じて、あなたが今、is_awareis_naiveをインポートすることができますし、あなたの要件に基づいてカスタマイズすることができます。

    Timezone-related classes and functions.

    このモジュールはpytzを使用していますそれが利用可能なときに、それがそうでないときにはフォールバックする。

    from django.utils.timezone import datetime 
    
    関連する問題