The model definition must come in an application - the error you're seeing there is that it tries to take the __name__
model_module
- which should be something like project.appname.models
for projectappnamemodels.py
- and get the app name, appname
. In the interactive console, the module's __name__
is '__main__'
- so it fails.
To get around this, you'll need to specify the app_label
yourself in the Meta
class;
>>> from django.db import models
>>> class Poll(models.Model):
... question = models.CharField(max_length=200)
... pub_date = models.DateTimeField('date published')
... class Meta:
... app_label = 'test'
For explanation of why you can do that, look at that file mentioned in the traceback, D:Python25libsite-packagesdjangodbmodelsase.py
:
if getattr(meta, 'app_label', None) is None:
# Figure out the app_label by looking one level up.
# For 'django.contrib.sites.models', this would be 'sites'.
model_module = sys.modules[new_class.__module__]
kwargs = {"app_label": model_module.__name__.split('.')[-2]}
else:
kwargs = {}
(Where meta
is the Meta
class, see just above in that file.)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…