Задать вопрос
@bickford
Python backend, неуверенный mid

Как в админке создать динамический выбор для M2M?

Есть модели:
class A(models.Model):
    title = models.CharField()

class B(models.Model):
    category = models.ForeignKey(A)
    title = models.CharField()

class C(models.Model):
    category = models.ForeignKey(A)
    products = models.ManyToManyField(B)


В админке изменяю модель C.
Каким образом для выбора M2M связей к модели B вывести только те экземпляры B, которые завязаны на уже выбранной модели A?

В идеале хочу понять, как сделать выбор A просто формальностью, без создания реальной завязки на нем.

Того, что сумел найти, мне явно не хватает. Пробовал создавать форму, в admin.py ее привязывать.

class MyForm(forms.ModelForm):

    class Meta:
        model = C
        fields = ('category', 'products')

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        category = ???
        self.fields['products'].queryset = category.products.all()


Каким образом тут получить выбранную мной category(модель A)?

По ощущениям я где-то очень близко к решению, но ничего не могу придумать.
  • Вопрос задан
  • 158 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 1
tumbler
@tumbler Куратор тега Django
бекенд-разработчик на python
Это на фронтенде делается, например с помощью django-select2
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы