我认为它并没有认识到我的领域的存在。这是我的models.py:
from django.db.models import *
from django.contrib import admin
from django.forms import *
class Stock(Model):
name = CharField(max_length=60)
class Meta:
ordering = ["name"]
def __unicode__(self):
return self.name
admin.site.register(Stock)
当我运行它时,我收到此错误:“portfolio.stock:”ordering“指”name“,这是一个不存在的字段。”当我评论元函数并运行它时,它工作正常,直到管理站点,当我尝试创建一个库存对象时,字段不显示。
我对发生的事情感到很困惑。
答案 0 :(得分:6)
问题在于您的*
导入。
django.db.models.CharField
正在被django.forms.CharField
:
>>> from django.db.models import *
>>> CharField
<class 'django.db.models.fields.CharField'>
>>> from django.forms import *
>>> CharField
<class 'django.forms.fields.CharField'>
因此,实际上name = CharField(max_length=60)
定义了一个表单字段而不是模型字段 - 它会破坏所有内容并使此错误变得微妙。
解决方案:删除不必要的forms
导入并在导入中明确显示:
from django.db import models
from django.contrib import admin
class Stock(models.Model):
name = models.CharField(max_length=60)
class Meta:
ordering = ["name"]
def __unicode__(self):
return self.name
admin.site.register(Stock)