bounty将在2天后过期。回答此问题可获得+50声望奖励。StuffHappens希望引起更多人关注此问题。
我有一个Django应用程序,使用djongo
作为数据库驱动程序。
class Blog(models.Model):
_id = models.ObjectIdField()
name = models.CharField(max_length=100, db_column="Name")
tagline = models.TextField()
class Entry(models.Model):
_id = models.ObjectIdField()
blog = models.EmbeddedField(
model_container=Blog
)
当我运行此应用程序时,我得到一个错误:
File "\.venv\lib\site-packages\djongo\models\fields.py", line 125, in _validate_container
raise ValidationError(
django.core.exceptions.ValidationError: ['Field "m.Blog.name" of model container:"<class \'project.m.models.Blog\'>" cannot be named as "name", different from column name "Name"']
我想保持模型和数据库中字段name
的名称不同,因为数据库已经存在,我不能更改它。数据库使用camelCase命名字段,而在应用程序中,我想使用snake_case。
如何避免这种错误?
3条答案
按热度按时间wlzqhblo1#
您得到的错误是由于Djongo试图验证模型中的字段
name
和数据库中创建的字段Name
。您可以通过在EmbeddedField
中设置validate=False
来指定Djongo不验证模型容器中的字段。将您的Entry模型修改为:这将修复您的错误。
g0czyy6m2#
试试这个:
或者这个
使用“db_colum”参数时,必须选择不同的名称,无论是小写还是大写
zfycwa2u3#
我认为它应该是
db_column
而不是bd_column
,因此: