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?