Администратор Django фильтрует внешнее поле на основе другого значения поля - PullRequest
0 голосов
/ 17 октября 2018

В моем приложении django, в панели администратора, когда я иду, чтобы добавить / изменить форму для моей таблицы, у меня есть два столбца внешнего ключа (комбинированный), main_id и Test_id.

Я бы отфильтровал содержащийся результатв поле test_id на основе выбора предварительного просмотра в выборе поля main_id.

В моем admin.py я пытаюсь:

    def formfield_for_foreignkey(self, db_field, request, **kwargs):
    if db_field.name == "test_id":
        kwargs["queryset"] = temp_case.objects.filter(main_id = <here i need the value selected on main_id combo>)
    return super().formfield_for_foreignkey(db_field, request, **kwargs)

, но я не знаю, что мне нужно написать в ''.

Я пытаюсь использовать main_id__id или main_id.id, но это не правильно.

Как я могу получить значение выборки в комбо main_id и передать его моему методу?

Спасибозаранее

1 Ответ

0 голосов
/ 18 октября 2018

Вы можете попробовать использовать Django Smart Selects Он имеет функцию, называемую Сгруппированный выбор

Цитата из Readme:

Если у вас естьследующая модель:

class Country(models.Model):
    continent = models.ForeignKey(Continent)

class Location(models.Model):
    continent = models.ForeignKey(Continent)
    country = models.ForeignKey(Country)

И вы хотите сгруппировать страны по континентам в списке выбора HTML, вы можете использовать GroupedForeignKey:

from smart_selects.db_fields import GroupedForeignKey

class Location(models.Model):
    continent = models.ForeignKey(Continent)
    country = GroupedForeignKey(Country, "continent")
...