Администратор django: показать список отфильтрованных элементов - PullRequest
0 голосов
/ 18 апреля 2011

Я работаю над интерфейсом администратора django, и у меня есть модель с внешним ключом. В этом поле я получаю выпадающее меню при просмотре страниц администратора. Есть ли способ отфильтровать выпадающий результат только там, где is_active = 1, например?

С уважением,

Ответы [ 2 ]

2 голосов
/ 18 апреля 2011

limit_choices_to - это то, что вы ищете.

Если вы хотите только ограниченный выбор в вашем ModelAdmin, вы должны настроить ModelForm соответственно.

Что-то вроде этого должно сделать это:

class YourAdminForm(forms.ModelForm):

    class Meta:
        model = YourModel

    def __init__(self, *args, **kwargs):
        super(YourAdminForm, self).__init__(*args, **kwargs)
        qs = self.fields['your_fk_field'].queryset
        self.fields['your_fk_field'].queryset = qs.filter(is_active=1) 
0 голосов
/ 12 июня 2018

Согласно документам

class MyModelAdmin(admin.ModelAdmin):
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == "car":
            kwargs["queryset"] = Car.objects.filter(is_active=1)
        return super().formfield_for_foreignkey(db_field, request, **kwargs)

Если вам нужен доступ к текущему объекту, отметьте это Как получить фактический идентификатор объекта на странице администратора Django (внутри formfield_for_foreignkey)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...