I’ve got a Django application with djongo
as a database driver. The models are:
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
)
When I run this application, I got an error:
File ".venvlibsite-packagesdjongomodelsfields.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"']
I want to keep the name of the field name
in my model and database different because the database already exists, and I can’t change it. The database uses camelCase for naming fields, whereas in the application, I want to use snake_case.
How to avoid this error?
4
Answers
I think it should be
db_column
instead ofbd_column
so:The error you’re getting is due to Djongo trying to validate the field
name
as in the model andName
as created in the database.You can specify for Djongo to not validate the fields of the model container by setting
validate=False
in theEmbeddedField
.Modify your Entry model as:
This should fix your error.
try this:
or this
When you use the "db_colum" parameter, you must choose a different name, even if it is lowercase or uppercase
you might need to do
manage.py makemigrations
andmanage.py migrate