﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
4470	Separate models.py in multiple files	Sidi Mohamed EL AATIFI <elaatifi@…>	nobody	"I want to separate my models file (models.py)  into multiple files : Product.py, Category.py, .... , which will be set up in the models directory. That´s to say:


{{{
+ myapp/
   + models/
   |- __init__.py
   |- Product.py
   |- Category.py
   |- Media.py
   |- ...
}}}


Since models is a module, we have to add the file __init__.py:

{{{
from Product import Product 
from Category import Category 
....

}}}

When doing, there are some actions from manage.py related to models that will not work.
It can be fixed, by associating models explicitly to the application :

{{{

class Product(models.Model):
...
   class Meta:
      app_label = 'myapp'
}}}


The app_label is deducted from the name of  model module (django/db/models/base.py, ):
   
{{{
new_class._meta.app_label = model_module.__name__.split('.')[-2]
}}}

So when the model module name is myproject.myapp.models.product, the app_label deducted  is models and not myapp, and this is
why manage.py syndb doesnt work for example.

I suggest to change it:


{{{
module_name = model_module.__name__.split('.')
new_class._meta.app_label = module_name[module_name.index('models')-1]


}}}
it works perfectly in the both cases."	Uncategorized	closed	Database layer (models, ORM)	dev	Normal	duplicate	models	brosner@… drackett@… gabor@… camillobruni@…	Design decision needed	1	0	1	0	0	0
