[Answered ]-Building simlpe django firehose

1👍

I don’t really like your approach since when you want to put another object on the firehose you’d need to add a third line (AnotherObject.objects.all … etc ) to all places you need to display that firehose !

For me, the best way to do this is to create a Firehose Model with fields like: date, action (add/delete/update etc) and object (a generic Foreign Key to the object that was changed). Now, whenever you make a change to an object that you want to add to the firehose, you’d add a new instance of the FirehoseClass with the correct field values. Finally, whenever you want to display the firehose you’ll just display all firehose objects.

1👍

To combine the lists, you can use create a list by using chain() from itertools, and then sort them by using sorted():

from itertools import chain
combined_lists = list(chain(new_post_list, comment_list))
sorted_combinened_list = sorted(combined_list, key=lambda instance: instance.postdate)

However, as you see, the sorting is only done by using one key. I don’t know of any method to use two different keys when sorting. You could fix this by simply add a property to the Comment class, named postdate that simply returns commentdate. Or, even better, you should use the same name for creation time for all your models, e.g. created_at.

This has been answered earlier and more detailed here: How to combine 2 or more querysets in a Django view?

Leave a comment