For most recent N, try something like:
My_Model.objects.order_by("-id")[:N]
[This assumes that your database assures that primary keys increase
monotonically against creation order. This is usual. If you have an
unusual database in this regard, or if you wanted to limit how old an
item can be considered "Recently Added", you would need to add a
DateTimeField with auto_now_add set to True, and work with that.]
I still don't follow what you want for Most Common, but I'll guess
that you want, for example, an "Event" model that has a CharField,
called, for example "etype", and you want to know which value of etype
occurs most among the existing model instances. There might be a way
to do this through the ORM, maybe using aggregate, annotate, etc., but
I'd be reaching for my SQL reference at this point to do a GROUP BY on
the etype field, then do a COUNT on the groups, then ORDER BY the
result of the COUNT, and finally LIMIT the result returned to 1. The
exact syntax, whether things need to be set up as subqueries, and
behavior may vary depending on which database is used. You should be
able to do this with "raw" queryset method, and you might be able to
do it with the "extra" queryset method, but you can always reach
around the ORM if needed. The problem with some simpler approaches
through the ORM is that, if the table is large, you would like to
limit how many results are transferred from the database to django.