为啥我在我的 Django 项目中不断收到此“名称‘模型’未定义”错误?
Posted
技术标签:
【中文标题】为啥我在我的 Django 项目中不断收到此“名称‘模型’未定义”错误?【英文标题】:Why do I keep getting this "name 'Model' is not defined" error in my Django project?为什么我在我的 Django 项目中不断收到此“名称‘模型’未定义”错误? 【发布时间】:2016-05-06 09:41:41 【问题描述】:我已经查看了该主题下的 *** 问题,并将我的 Trainer 课程移到了 Class_Training 课程的上方,但是当我输入“管理.py 在我的命令提示符下创建超级用户。
另外,我在迁移模型时遇到了困难。我尝试了“django-admin makemigrations training”,但 django-admin 没有被识别;和“manage.py makemigrations training”,但 makemigrations 未被识别。
如何迁移我的模型?
这是我的代码:
#from django.db import models
from django_pg import models
# Create your models here.
TRAINING_TYPE_CHOICES = (
('AC', 'Armed Combat'),
('UC', 'Unarmed Combat'),
('P', 'Piloting'),
('O', 'Other'),
)
GENDER_CHOICES = (
('F', 'Female'),
('M', 'Male'),
('U', 'Unspecified'),
)
OUTCOME_CHOICES = (
('P', 'Pass'),
('F', 'Fail'),
)
class Trainer(models, Model):
first_name = models.CharField(max_length = 25)
surname = models.CharField(max_length = 30)
address = models.CharField(max_length = 200)
gender = models.CharField(max_length = 1, choices = GENDER_CHOICES)
citizenship = models.CharField(max_length = 30)
email = models.EmailField(max_length = 30)
class Class_Training(models, Model):
trainer = models.ForeignKey('Trainer')
class_name = models.CharField(max_length = 30)
type_of_class = models.CharField(max_length = 2, choices= TRAINING_TYPE_CHOICES)
description = models.TextField(max_length = 200)
def __str__(self):
return self.class_name, self.trainer
class ReportLog(models.CompositeField):
class_ID = models.IntegerField
hero_ID = models.IntegerField
outcome = models.CharField(max_length = 1, choices = OUTCOME_CHOICES)
comments = models.TextField
trainer = models.IntegerField
class Meta:
db_type = 'report'
class Attendance(models.CompositeField):
class_ID = models.IntegerField
hero_ID = models.IntegerField
room_name = models.CharField(max_length = 30)
date = models.DateField
start_time = models.TimeField
end_time = models.TimeField
class Meta:
db_type = 'attendance'
class Room(models, Model):
room_name = models.CharField(max_length = 20)
class Hero(models, Model):
codename = models.CharField(max_length = 20)
def __str__(self):
return self.codename
【问题讨论】:
【参考方案1】:解决Model
的问题
您在某些模型定义中使用了models, Model
而不是models.Model
。 Model
类在 model
模块中。这就是我们使用.
而不是逗号的原因。
房间模型:
class Room(models.Model):
英雄模型:
class Hero(models.Model):
培训师模型:
class Trainer(models.Model):
最后:
class Class_Training(models.Model):
解决迁移问题
应该是:
python manage.py makemigrations
你需要python
命令。还要检查您是否在您的manage.py
所在的目录中。
【讨论】:
我正在使用 Windows 命令提示符,但它无法识别术语“python”。 您需要在系统路径中添加python
。
我该怎么做?我的 C 盘中有 Python34 (3.4),如:C:/Python34.
抱歉,我有一段时间没有使用 Windows 进行开发了。您可以在 Google 中搜索。
好的,我已经添加了 python 命令,它现在可以识别它,但是 'makemigrations' 仍然不能识别为命令。以上是关于为啥我在我的 Django 项目中不断收到此“名称‘模型’未定义”错误?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我在 Django 中使用此调用从 Paypal 收到“内部错误”?