+ 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 Post
from Category import Author
....
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.
> 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.
Hi,
Thanks for the suggestion. Could you please submit this as a ticket on
our ticket tracker. This message will get lost on the mailing list;
putting it on the ticket tracker means we won't forget to look at
this.
Yours,
Russ Magee