Question

I use mongoengine with django. I have two applications with models.

app1/models.py:

from mongoengine import fields
from mongoengine.document import Document

class Model1(Document):
    name = fields.StringField()
    lists = fields.ListField(fields.ReferenceField("Model2", dbref=False))

app2/models.py:

from mongoengine import fields
from mongoengine.document import Document

class Model2(Document):
    name = fields.StringField()

All applications were added to INSTALLED_APPS. When I use the django dev-server, everything is fine. But using this code with uwsgi-server there is an error:

Model2 has not been registered in the document registry.
Importing the document class automatically registers it, has it
been imported?

What I should do?

Was it helpful?

Solution

You should import app2.models somewhere. Put a comment by the import saying why it's there, so nobody removes the useless-looking import in the future.

When the django dev server starts up it imports the models from all installed apps and validates them. You'll see

Validating models... 
0 errors found

This does not happen in a production environment. It is just a nicety of the dev server.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top