[英]Why do I keep getting this “name 'Model' is not defined” error in my Django project?
I've looked through the stackoverflow questions under this topic already and I moved my Trainer class to be above my Class_Training class, but I still keep getting the same "name 'Model' is not defined" error when I enter 'manage.py create superuser' on my command prompt. 我已经仔细研究了该主题下的stackoverflow问题,并将Trainer类移到了Class_Training类之上,但是当我输入“ manage.py create”时,仍然出现相同的“未定义模型名称”错误超级用户”。
Also, I am having diffuclty migrating my models. 另外,我在迁移模型方面有些困难。 I tried 'django-admin makemigrations training' but django-admin as not recoginised;
我尝试过“ django-admin makemigrations培训”,但是django-admin没有重新识别。 and 'manage.py makemigrations training' but makemigrations was not recognised.
和“ manage.py makemigrations培训”,但未识别makemigrations。
How do I migrate my models? 如何迁移模型?
Here is my code: 这是我的代码:
#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
Model
Model
问题 You have used models, Model
instead of models.Model
in some of your model definitions. 您已在某些模型定义中使用
models, Model
而不是models.Model
。 The Model
class is in the model
module. Model
类位于model
模块中。 That's why we use a .
这就是为什么我们使用
.
instead of a comma. 而不是逗号。
Room model: 房间型号:
class Room(models.Model):
Hero model: 英雄模型:
class Hero(models.Model):
Trainer model: 教练员型号:
class Trainer(models.Model):
And finally: 最后:
class Class_Training(models.Model):
It should be: 它应该是:
python manage.py makemigrations
You need python
command. 您需要
python
命令。 Also check if you are in the directory where your manage.py
is. 还要检查您是否位于
manage.py
所在的目录中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.