DjangoのAdminでInlineの表示件数を制限する方法【Limit】

Inlineの表示件数を制限したくて色々試していて
max_numは多分入力欄の最大数っぽくてできなかった
get_queryset内で、スライスしたら
Cannot filter a query once a slice has been taken.
こんなこと言われる。。

どうやら、簡単にはできないみたいで、

まず、以下のようなFormsetを作成する

class LimitModelFormset(forms.BaseInlineFormSet):
    """
    10件に制限するFormset
    """
    def __init__(self, *args, **kwargs):
        super(LimitModelFormset, self).__init__(*args, **kwargs)
        _kwargs = {self.fk.name: kwargs['instance']}
        self.queryset = kwargs['queryset'].filter(**_kwargs)[:10]

そして、InlineにFormsetに設定する

class SampleInline(admin.TabularInline):
    formset =LimitModelFormset
    …

https://github.com/geex-arts/django-jet/issues/244

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です