Почему мои поля модели django не работают?


Я не думаю, что это признание существования моих полей. Вот мой 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)

Когда я запускаю его, я получаю эту ошибку: "портфолио.запас: "заказ" относится к" имени", полю, которое не существует."Когда я комментирую мета-функцию и запускаю ее, она работает нормально до тех пор, пока на сайте администратора, где я пытаюсь создать биржевой объект, поля не появляются.

Я совершенно сбит с толку тем, что происходит.
1 3

1 ответ:

Проблема заключается в вашем импорте *.

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)