Maybe -- in fact, almost certainly not -- the best way, but this is
how I do that kind of thing:
a_queryset = ModelA.objects.all()
another_queryset = ModelB.objects.filter.(by_something=True)
yet_another_queryset =
ModelC.objects.exclude(by_something_else=False)
from itertools import chain
big_honking_list = list(chain(a_queryset, another_queryset,
yet_another_queryset))
big_honking_list.sort(key=lambda x: x.updated)
big_honking_list.reverse()
As to your last question, that is easy if you're doing a list.sort()
-- just expose a method on each model that returns a sortable value
that is consistent across all the models. (Or write a dedicated
function to use instead of the lambda above, whichever makes more
sense.)
On Oct 26, 7:25 am, Ed <[email protected]> wrote:
> I want to create a "What's New" section that lists all of the database
> changes in the last day. I've added an "updated" field to my models:
>
> class Film(models.Model):
> .
> .
> .
> updated = models.DateTimeField(auto_now=True)
>
> class Actor(models.Model):
> .
> .
> .
> updated = models.DateTimeField(auto_now=True)
>
> Now I want to query across all of my models to get a date-sorted list
> of the most recent changes. How do I query the "updated" field across
> multiple models? Is this the most efficient way to achieve the primary
> purpose?
>
> What if I wanted to be more specific and list the actual field that
> was altered within each model?
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en.