3

我不认为这是承认我的领域的存在。这是我的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”,一个不存在的字段。” 当我注释掉元函数并运行它时,它可以正常工作,直到管理站点,当我尝试创建股票对象时,字段不显示。

我完全被正在发生的事情弄糊涂了。

4

1 回答 1

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)
于 2013-09-02T20:21:58.610 回答