Django:更改模型中的字段类型时出现 FieldDoesNotExist 错误

Ami*_*ini 1 python django django-models django-file-upload mongoengine

我对我的models.py. 我将字段从 更改FileField()ImageWithThumbsField()

from mongoengine import *
from gradfounder.settings import DBNAME
from embed_video.fields import EmbedVideoField
from thumbs import ImageWithThumbsField

##########################################
# Mongoengine registration/authentication
#from mongoengine.django.auth import User
##########################################

#connect(DBNAME)
# connect(DBNAME, host='127.0.0.1', port=27017)
connect(DBNAME, host='xxx.xxx.xxx.xxx', port=27017)

class Author(Document):
    # photo = FileField()
    photo = ImageWithThumbsField(upload_to="avatars")
    photoname = StringField()
Run Code Online (Sandbox Code Playgroud)

然后我得到了这个错误

  File "C:\Python27\lib\site-packages\mongoengine\base\document.py", line 80, in
 __init__
    raise FieldDoesNotExist(msg)
FieldDoesNotExist: The field 'photo' does not exist on the document 'Author'
Run Code Online (Sandbox Code Playgroud)

我尝试迁移,syncdb但出现错误DatabaseError: (1050, "Table 'profiles_profile' already exists")

欢迎任何愿意共同致力于此工作的人。

Ami*_*ini 5

是的!我找到了解决方案!

该错误是由 Mongoengine 验证引起的,该验证对更改的字段感到困惑。解决方案是通过添加以下代码来禁用验证:

class Author(Document):
    # photo = FileField()
    photo = ImageWithThumbsField(upload_to="avatars")
    photoname = StringField()
    meta = {'strict': False}
Run Code Online (Sandbox Code Playgroud)

感谢这个问题!mongoengine - 忽略架构验证的额外字段