Hi, a while ago i have written a similar question: http://groups.google.com/group/django-users/browse_thread/thread/b42239bcfb85e21f/0ec972719fbde390#0ec972719fbde390
and beside an extensible view for profiles i have now also added a few extension mechanisms for my forum application (http://sct.sphene.net) - this allowed me to create a decoupled "link list" application which is based on my forum - since i'm not really a python expert i would love to get feedback if this is the best way to do it .. there are basically four parts in this extension mechanism: 1. create a registry where applications can add their specific extension classes (in my forum these are "Category Types") 2. add a hook to the post view to let the "category type" modify the newforms-PostForm and add custom fields 3. add a hook to the post view to let the "category type" handle saving of custom fields 4. add hooks to let the "category type" use different template files a bit more description: ad 1.) this is basically: http://yourhell.com/wsvn/root/django/communitytools/trunk/sphenecoll/sphene/sphboard/categorytyperegistry.py - all applications would then add their subclasses of 'CategoryType' in their __init__.py file. the 'Category' model then has a category_type field which contains the name of the CategoryType. ad 2.) here is an example implementation: http://yourhell.com/wsvn/root/django/communitytools/trunk/sphenecoll/sphene/sphlinklist/categorytype.py which makes a linklist out of a forum category - the method "get_post_form_class" would return a specific "LinkListPostForm" which is extended from the forum's PostForm and simply adds a "link" field - it also reorders the fields using: self.fields.insert(1, 'link', self.fields['link']) ad 4.) i simply have functions like "get_show_thread_template" which would return the path and name of a template which should be rendered.. this is usually extends from the default template and overloads a few {% block %}'s so .. my questions would be: is this the right "django way" of allowing extensions for an application ? is it useful to let applications add their classes from an __init__.py file ? or would it be better to assume that every extension would have a module named 'categorytype' in the application's module ? ie. the forum would then iterate through all applications to look for an 'categorytype' module ? would this be better than to expect applications to register extensions themselves ? - or simply using signals for extensions - as i've used for the profiles: http://sct.sphene.net/wiki/show/Community/UserProfiles/ and for newforms: is this a "valid" usage ? simply modifying the "fields" object .. or would it be better to create a complete separate form for the extension ? - i guess it impacts performance a bit because i _always_ modify "fields" for each instance, on every request instead of just modifying "base_fields" once (would this be somehow possible ? i guess not ?) it would be great if anyone could give me a hint if this is a good approach or if it has some fundamental problems i haven't thought of. thanks in advance & cu, herbert http://sct.sphene.net/ --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---