Friday, March 30, 2012

Re: How can I best create a blog that works similarly to Tumblr?

On 31/03/2012, at 4:01 AM, Willy wrote:

> I know the question is kind of poorly phrased. But here goes, I've been working on a blog software and I want to have five distinct post types (in the same way Tumblr does) but I'm having a hard time figuring out how to create my index view and detail views as they are currently five different models that inherit from the same abstract base model.
> Here is my
> as well as my
> and for safe measure, my within the app
> How can I make this work? The current hack of using chain() isn't really working out because of the fact that it returns a list, not a queryset.

It sounds like most of your problems originate from the fact that you're using an abstract base class for posts.

If you make BasePost non-abstract, then you'll be able to generate a queryset of BasePost objects, rather than having to chain through querysets of the concrete subclasses. Once you have a BasePost instance, you can retrieve the specific details associated with each instance with a single attribute request. It also means that when you start introducing links to posts, you won't need to maintain 5 different foreign key types (i.e., link to a text post, link to an image post, etc) -- there's just one "link to a post".

The detail view is also simplified -- it's a detail view for BasePost, not some hybrid that is trying to handle 5 different subclasses.

The only other thing you might want to change is to make post_type a field on BasePost; this isn't strictly required, but it will make it easier to do CORBA-style "narrowing" (i.e., I have a BasePost instance; what type of Post is it, and how do I get an object of that type?).

Hope this helps!

Russ Magee %-)

You received this message because you are subscribed to the Google Groups "Django users" group.
To post to this group, send email to
To unsubscribe from this group, send email to
For more options, visit this group at

No comments:

Post a Comment