Задать вопрос
@albertalexandrov

Django MPTT: как автоматически выбрать потомков в дереве при выборе родителя?

При селекте родителя (Cluster #1) не селектятся потомки (Store #1 и Store #2):

612fc30ec5d14177202084.png

Как сделать так, чтобы при выборе родителя автоматически выделялись и все потомки?

Модели

from django.db import models
from mptt.fields import TreeForeignKey
from mptt.models import MPTTModel


class Orgunit(MPTTModel):
    name = models.CharField(
        max_length=100
    )
    type = models.CharField(
        choices=[
            ('MACRO', 'Макро'),
            ('CLUSTER', 'Кластер'),
            ('KUST', 'Куст'),
            ('STORE', 'Магазин')
        ],
        max_length=100
    )
    parent = TreeForeignKey(
        'self',
        on_delete=models.CASCADE,
        null=True,
        blank=True,
        related_name='children'
    )

    def __str__(self):
        return self.name


class Deviation(models.Model):
    name = models.CharField(max_length=100)
    number = models.PositiveIntegerField(null=True)
    orgunits = models.ManyToManyField('orgunits.Orgunit')

    def __str__(self):
        return self.name


Админка:

from django.contrib import admin

from deviations.forms import MyForm
from deviations.models import Deviation


@admin.register(Deviation)
class DeviationAdmin(admin.ModelAdmin):
    form = MyForm


Форма:

from django.forms import ModelForm, widgets
from mptt.forms import TreeNodeMultipleChoiceField

from orgunits.models import Orgunit


class MyForm(ModelForm):
    orgunits = TreeNodeMultipleChoiceField(queryset=Orgunit.objects.all(), widget=widgets.SelectMultiple())

    class Meta:
        model = Orgunit
        fields = '__all__'
  • Вопрос задан
  • 198 просмотров
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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