views:

301

answers:

3

Say for example I have a Blog app that I want to be able to drop into different projects, but I always want the Blog to be associated with some other model. For example, in one case I may want it to be associated with a user:

site.com/someuser/blog

But on another site I want it to be associated with, say, a school:

site.com/someschool/blog

Is there a way to make the Blog app pluggable so that it's not necessary to redefine the model (adding a foreign key field) whenever I drop it into a project?

+3  A: 

There are several important details for making sure an app can be reusable and I think it's best to link to two of the more important sets of documentation on the topic:

Van Gale
A: 

Generic relationships allow you to have a foreign key to any other model. However it's not clear from your question what type of object you want a foreign key to link to. I suspect that foreign key relationship isn't really generic - you just haven't spotted another part of your system that could also be a reusable app.

andybak
A: 

You might want to look into the ContentTypes framework, I used it to create a comment app that can be used for commenting any model in the database (for different reasons, I didn't want to use the standard django comment app).

http://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/

Jens Alm