Привет всем, в кои-то веки сподобился написать о Django.

Причём не общий пост, а решение конкретной мелкой задачки.

Итак, задача: Нужно ограничить количество записей в InlineModelAdmin.

Решение: По историческим причинам, иерархия классов в Django сильно различается для ModelAdmin и InlineModelAdmin:

Model <-(has)<- ModelAdmin ->(has)-> queryset

, но

Model <-(has)<- InlineModelAdmin ->(has)->
-> formset = BaseInlineFormSet ->(has)-> get_queryset

Итого:

class MyBaseInlineFormSet(BaseInlineFormSet):
    def get_queryset(self):
        sup = super(MyBaseInlineFormSet, self).get_queryset()
        return sup.order_by('-id')[:5]

reg_inline(A, B, formset = MyBaseInlineFormSet, extra = 5)

Где reg_inline это упрощенный способ сделать site.register с помощью моего http://github.com/buriy/django-superadmin