I may be dense but is this the functional equiv of cobtrib.comments get_model()?
On Sep 26, 8:28 am, Klaas van Schelven <klaasvanschel...@gmail.com> wrote: > Hi all, > > I'm looking for a bit of input for making Django's apps a bit more > extendable, either by modifying Django or (preferably) by coming up > with a common language on top op Django. The main painpoint are > extendable models. The idea of 'extendable' is that models from > reusable apps can be extended in any concrete project. The reusable > apps should refer to their own models in such a way that they will get > the concrete implementation (extension). > Class based models if you will. > > Context can be found > here:http://groups.google.com/group/django-users/browse_thread/thread/2287... > > Currently, apps usually refer to their own models by simply importing > them from models.py and referring to them. This obviously will not > work, so any solution will need some kind of registry, or instance of > "app". If "app" is an instance of a class referring to it can be done > in an extendible way (simply by using Python's inheritance mechanism). > > I've put an example of this approach > here:http://bitbucket.org/vanschelven/extendible_app_experiment/src/0862ce... > > Which incorporates the above idea of an app class & instance in blog/ > __init__.py. > > abstract_blog/abstract_models.py and blog/models.py > > The key sections are: > (in abstract_models) > > def get_AbstractPage(self): > class AbstractPage(models.Model): > body = models.TextField() > category = models.ForeignKey(self.app.models.Category) > > class Meta: > abstract = True > #app_label = 'abstract_blog' > return AbstractPage > AbstractPage = property(get_AbstractPage) > > (in models) > def get_Category(self): > class Category(self.AbstractCategory): > some_added_field = models.IntegerField() > return Category > Category = property(get_Category) > > As you can see, it is possible to refer to "the apps real > implementation of Category" (self.app.models.Category, or just > self.Category) from the abstract model. Less neat: the cruft that's > needed to pass self into AbstractPage for reference (3 lines per > class: def, return & property). > > In a more recent version I've managed to factor those lines away at > the cost of a lot of > magic.http://bitbucket.org/vanschelven/extendible_app_experiment/src/2b8eb6... > > class AbstractModels(object): > #... > class AbstractPage(shmodels.Model): > body = shmodels.TextField() > category = > shmodels.ForeignKey(Zelf("app.models.Category")) > > Neet uh? Self referral without an actual introduction of "self". > > I may look for the general case of Zelf & Zelf2 and shmodels and > whatever... but I'd like to know that this is a path worth following. > In other words: am I missing really obvious, more simple solutions > here? > > ciao, > Klaas -- You received this message because you are subscribed to the Google Groups "Django developers" group. To post to this group, send email to django-develop...@googlegroups.com. To unsubscribe from this group, send email to django-developers+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-developers?hl=en.