Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

like image 990
john Avatar asked Apr 04 '11 03:04

john


People also ask

What does Django DB models model clean () do?

This method will validate all fields on your model. The optional exclude argument lets you provide a set of field names to exclude from validation. It will raise a ValidationError if any fields fail validation. The second step full_clean() performs is to call Model.clean() .

What is proxy model in Django?

A proxy model is a subclass of a database-table defining model. Typically creating a subclass of a model results in a new database table with a reference back to the original model's table - multi-table inheritance. A proxy model doesn't get its own database table. Instead it operates on the original table.


1 Answers

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" 

http://docs.djangoproject.com/en/1.7/ref/models/options/#app-label

like image 174
John Debs Avatar answered Oct 10 '22 06:10

John Debs