6

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?

rick
  • 4,103
  • 9
  • 37
  • 41

3 Answers3

6

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
  • 43,536
  • 9
  • 71
  • 81
4

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
  • 3,027
  • 4
  • 22
  • 24
3

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.

Dave Forgac
  • 3,146
  • 7
  • 39
  • 54
Andy Baker
  • 21,158
  • 12
  • 58
  • 71