アプリのディレクトリでコマンドラインを入力した後:
python manage.py runserver
このエラーが発生します:
Traceback (most recent call last):
File "manage.py", line 15, in <module>
execute_from_command_line(sys.argv)
File "C:\Users\Paulo\Coding\Python\lib\site-packages\django\core\management\__init__.py", line 371, in execute_from_command_line
utility.execute()
File "C:\Users\Paulo\Coding\Python\lib\site-packages\django\core\management\__init__.py", line 347, in execute
django.setup()
File "C:\Users\Paulo\Coding\Python\lib\site-packages\django\__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "C:\Users\Paulo\Coding\Python\lib\site-packages\django\apps\registry.py", line 112, in populate
app_config.import_models()
File "C:\Users\Paulo\Coding\Python\lib\site-packages\django\apps\config.py", line 198, in import_models
self.models_module = import_module(models_module_name)
File "C:\Users\Paulo\Coding\Python\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "C:\Users\Paulo\Coding\Django projects\Project 1\freezer\models.py", line 5, in <module>
class Item(models.Model):
File "C:\Users\Paulo\Coding\Django projects\Project 1\freezer\models.py", line 31, in Item
added_date = models.DateField("date added", default=datetime.date.today)
NameError: name 'datetime' is not defined
この同様のタイトルの質問は私を助けませんでした。私が持っています
from datetime import date
私のmodels.pyで。
私はpython3.6.5とDjango2.0.4を実行しています。私はしばらく前にこのアプリをオンラインにしましたが、それはまだ機能していて、models.pyは同じです。私は自分が間違ったことをしたのか混乱しています。最近Windows10をリセットする必要があることに関連している可能性がありますか?プロセス内のPythonインストール(私のプログラムファイルディレクトリ内)や他の多くのものを削除しました。
それは私のPythonインストールの1つをそのままにしました。コマンドラインからそれを開いて日時をインポートし、関数を使用して今日の日付を返しました。
これが私のmodels.pyです:
from django.db import models
from django.utils import timezone
from datetime import date
class Item(models.Model):
FREEZER_DRAWERS = (
(1, 'Kitchen: Top tray'),
(2, 'Kitchen: Middle drawer'),
(3, 'Kitchen: Bottom drawer'),
)
TYPES = (
(1, 'Raw meat'),
(2, 'Fruit and veg'),
(3, 'Meal'),
)
author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
title = models.CharField("food", max_length=100)
item_type = models.IntegerField(choices = TYPES, default = 1)
added_date = models.DateField("date added", default=datetime.date.today)
where = models.IntegerField(choices = FREEZER_DRAWERS, default = 1)
expires_date = models.DateField(default = datetime.date.today)
on_shopping_list = models.BooleanField()
def __str__(self):
return self.title
ありがとうございました!これは、私がこれらのフォーラムを見て答えることができなかった時代の最初の質問です!
問題は、datetime
モジュールをインポートしなかった(または少なくとも修飾された方法で)ことではありませんdate
。属性をインポートしました。
date
クラスを使用するあなたはdatetime.date
ただで置き換えることができますdate
(そしてこれはあなたが必要とする唯一の要素です):
from django.db import models
from django.utils import timezone
from datetime import date
class Item(models.Model):
FREEZER_DRAWERS = (
(1, 'Kitchen: Top tray'),
(2, 'Kitchen: Middle drawer'),
(3, 'Kitchen: Bottom drawer'),
)
TYPES = (
(1, 'Raw meat'),
(2, 'Fruit and veg'),
(3, 'Meal'),
)
author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
title = models.CharField("food", max_length=100)
item_type = models.IntegerField(choices = TYPES, default = 1)
added_date = models.DateField("date added", default=date.today)
where = models.IntegerField(choices = FREEZER_DRAWERS, default = 1)
expires_date = models.DateField(default = date.today)
on_shopping_list = models.BooleanField()
def __str__(self):
return self.title
または、モジュールをインポートしてから、次を使用することもできますdatetime.date
。
from django.db import models
from django.utils import timezone
import datetime
class Item(models.Model):
FREEZER_DRAWERS = (
(1, 'Kitchen: Top tray'),
(2, 'Kitchen: Middle drawer'),
(3, 'Kitchen: Bottom drawer'),
)
TYPES = (
(1, 'Raw meat'),
(2, 'Fruit and veg'),
(3, 'Meal'),
)
author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
title = models.CharField("food", max_length=100)
item_type = models.IntegerField(choices = TYPES, default = 1)
added_date = models.DateField("date added", default=datetime.date.today)
where = models.IntegerField(choices = FREEZER_DRAWERS, default = 1)
expires_date = models.DateField(default = datetime.date.today)
on_shopping_list = models.BooleanField()
def __str__(self):
return self.title
auto_now_add
のDateField
これをどのようにインポートするかに関係なく、実際、Djangoはすでにそのようなデフォルトをサポートしています:with auto_now_add=True
[Django-doc]:これはtoday
。に等しいデフォルト値を追加します。さらに、それはフィールドを作りますblank=True
、そしてeditable=False
、それがされるようになどの形式で表示することを防ぐためではない、それはあなたが何を意味するかと思われるが、完全に同等:
# Note: makes the fields blank=True, and editable=False as well.
from django.db import models
from django.utils import timezone
class Item(models.Model):
FREEZER_DRAWERS = (
(1, 'Kitchen: Top tray'),
(2, 'Kitchen: Middle drawer'),
(3, 'Kitchen: Bottom drawer'),
)
TYPES = (
(1, 'Raw meat'),
(2, 'Fruit and veg'),
(3, 'Meal'),
)
author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
title = models.CharField("food", max_length=100)
item_type = models.IntegerField(choices = TYPES, default = 1)
added_date = models.DateField("date added", auto_now_add=True)
where = models.IntegerField(choices = FREEZER_DRAWERS, default = 1)
expires_date = models.DateField(auto_now_add=True)
on_shopping_list = models.BooleanField()
def __str__(self):
return self.title
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加