Django EmbeddedField 由于重命名字段而引发 ValidationError

Stu*_*ens 7 python django django-models mongodb djongo

我有一个 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
    )
Run Code Online (Sandbox Code Playgroud)

当我运行这个应用程序时,我收到一个错误:

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"']
Run Code Online (Sandbox Code Playgroud)

我想保持模型和数据库中的字段名称name不同,因为数据库已经存在,并且我无法更改它。数据库使用camelCase命名字段,而在应用程序中,我想使用snake_case。

如何避免这个错误?

小智 0

我认为应该这样db_column而不是bd_column这样:

class Blog(models.Model):
    _id = models.ObjectIdField()
    name = models.CharField(max_length=100, db_column="Name")
    tagline = models.TextField()

Run Code Online (Sandbox Code Playgroud)