6

私はDjangoの初心者です、

私はチュートリアルに従っており、以下に示す2つのモデルを作成する必要がありました。

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

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_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)


class Choice(models.Model):
    poll = models.ForeignKey(Poll)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField()

    def __unicode__(self):
        return self.choice_text

次のコードはチュートリアルからのものです。私は真になるべきです。

# Make sure our custom method worked.
>>> p = Poll.objects.get(pk=1)
>>> p.was_published_recently()
True

しかし、私が入力すると(チュートリアルと同じ行):

>>> p = Poll.objects.get(pk=1)
>>> p.was_published_recently()

次のエラーメッセージが表示されます。

models.py line 12 in was_published_recently
NameError: global name 'datetime' is not defined..

インポートdatetimeしてtimezone...なぜそのエラーメッセージが表示されるのかわかりません。

どんな助けでもありがたいです!:-)

4

9 に答える 9

9

最初にDjangoutilsからTimezoneをインポートし、その後datetimeをインポートする必要があります。

from django.db import models
    from django.utils import timezone
    import datetime
于 2015-02-10T19:09:34.347 に答える
5

テストチュートリアル(パート5)では、polls/tests.pyファイルを処理します。ただし、テストを実行すると、polls/models.pyファイルについてエラーが発生します。このファイルはテストチュートリアルでは言及されていませんが、エラーメッセージで確認できます。

polls / models.pyに追加from django.utils import timezoneして、テストを再試行してください。

于 2016-03-06T01:09:53.743 に答える
4

問題を再現できませんでした。あなたのコードは私のために機能します。あなたはこのようなもので試すことができます:

from datetime import timedelta as tdelta
...
def was_published_recently(self):
    return self.pub_date >= timezone.now() - tdelta(days=-1)
于 2013-02-06T02:52:59.190 に答える
3

問題が最初のDjangoアプリの作成、パート5に関するものである場合は、これら2行を追加する必要があります

import datetime
from django.utils import timezone
于 2018-12-21T17:42:41.543 に答える
2

明確にするために、これは私のpolls/models.pyファイルの先頭に追加する必要があるものです。

import datetime
from django.utils import timezone
于 2014-06-22T01:17:55.830 に答える
0

私はこれが古いスレッドであることを知っています。次の行を追加するのを忘れたため、同じ問題が発生しました:from django.utils import timezone

于 2013-10-20T14:26:34.647 に答える
0

そのエラーメッセージについて、Djangoのドキュメントが言っていることに注意してください:

日付または時刻のクエリで例外が発生した場合は、バグを報告する前にインストールしてみてください。>それは次のように簡単です:

$ sudo pip install pytz

パッケージをインストールすると、問題は魔法のように解消されます。

于 2015-01-10T16:57:20.827 に答える
0

私はすべてを試しましたが、問題はまだ解決されていませんでした。結局、シェルで他の人が述べたのと同じ順序でインポートしたときにも、テストは機能しました。

最後に日時をインポートする必要があり、その後で動作を開始しました。

于 2019-08-27T13:27:38.580 に答える
0

同じ問題が発生しました。

のインポートを追加した後、Pythonシェルを再度開いtimezoneて、変更を適用する必要があることがわかりました。その後、それは私のために働いた。

于 2021-12-08T13:47:06.347 に答える