2013-09-02 2 views
3

Я не думаю, что это признание существования моих полей. Вот мой models.py:Почему мои поля модели django не работают?

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:„упорядочение“относится к„имя“, поле, которое не существует.» Когда я комментирую мета-функцию и запускаю ее, она отлично работает до сайта администратора, где, когда я пытаюсь создать объект запаса, поля не отображаются.

Я полностью смущен тем, что происходит.

ответ

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) 
+0

отметить также 'models.Model' и' models.Charf ... 'изменения: р – keyser

+0

Ahh спасибо , Это имеет большое значение. – aled1027

Смежные вопросы