In order to place my models in sub-folders I tried to use the app_label Meta field as described here.
My directory structure looks like this:
- project
- apps
- foo
- models
- _init_.py
- bar_model.py
- models
- foo
- apps
In bar_model.py I define my Model like this:
from django.db import models
class SomeModel(models.Model):
field = models.TextField() class Meta: app_label = "foo"
I can successfully import the model like so:
from apps.foo.models.bar_model import SomeModel
However, running:
./manage.py syncdb
does not create the table for the model. In verbose mode I do see, however, that the app "foo" is properly recognized (it's in INSTALLED_APPS in settings.py). Moving the model to models.py under foo does work.
Is there some specific convention not documented with app_label or with the whole mechanism that prevents this model structure from being recognized by syncdb?