@Lopus

Как можно отфильтровать список в админке для ForeignKey?

Есть модели: Category, Articles, News
У Articles и News есть поле category=ForeignKey(Category)
В админке при добавлении статьи или новости можно выбрать категорию из списка. Мне бы хотелось именно для News отфильтровать список возможных категорий по какому-то параметру. Для статей соответственно оставить всё как есть.
Подозреваю, что для News.admin можно переопределить какой-то метод и как-то подсунуть собственный алгоритм выборки.
  • Вопрос задан
  • 206 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
Переопределить ModelAdmin.formfield_for_foreignkey:
class NewsAdmin(admin.ModelAdmin):
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == "category":
            kwargs["queryset"] = Category.objects.filter(some_parameter=some_value)
        return super(NewsAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)

Хотя, я предпочитаю лимитировать возможные значения ForeignKey в модели.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы