Привет всем, в кои-то веки сподобился написать о 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
Comments
А ещё оказывается есть field.limit_choices_to