Search code examples
pythondjangodjango-modelssplit

How do I separate my models out in django?


I'm trying to learn python/django.

Right now, I have all of my models in models.py

Is it possible to have my models broken out so that I can have a single file per model in a separate models folder so that I can do something like:

~/myproject/myapp/models/user.py ~/myproject/myapp/models/group.py

Thanks


Solution

  • It is possible, just make sure to import all the models you create in __init__.py in your models directory. In your case, it would look like this:

    # __init__.py
    from .user import UserModel
    from .group import GroupModel
    

    This needs to be done because Django looks in app.models for an app's models.

    As others have mentioned, for versions of Django prior to 1.7, you'll also need to specify your app's name in the app_label attribute in the Meta class in your model:

    class UserModel(models.model):
        # fields here
    
        class Meta:
            app_label = "myapp"
    

    https://docs.djangoproject.com/en/5.0/ref/models/options/#app-label