отправить выбранные элементы в отношении многих ко многим - PullRequest
0 голосов
/ 31 декабря 2018

Я создал узел и запланированные модели действий с отношением manyTomany:

class Node(models.Model):
    name = models.CharField(default='node', max_length=32)
    nb_solenoid = models.DecimalField(max_digits=19, decimal_places=10, null=True, blank=True)
    connexion = models.CharField(max_length=255)

class ScheduledAction(models.Model):
    date = models.DateTimeField(default=datetime.now, blank=True)
    firm = models.ForeignKey('firme.Firme', on_delete=models.CASCADE, null=True, blank=True)
    node_ids = models.ManyToManyField(Node) 

В forms.py:

class ScheduledActionForm(forms.ModelForm):
    date = forms.DateTimeField()
    firm = forms.ModelChoiceField(queryset=Firme.objects.all())
    node_ids = forms.ModelMultipleChoiceField(queryset=Node.objects.filter(), widget=forms.CheckboxSelectMultiple)

    class Meta:
        model = ScheduledAction
        fields = [
            'date',
            'firm',
            'node_ids'
        ]

в views.py:

def planification_view(request):
    scheduledAction = ScheduledActionForm(request.POST or None)
    nodes = Node.objects.all()
    if scheduledAction.is_valid():
        scheduledAction.save()
        print('formulaire enregistre')
        scheduledAction = ScheduledActionForm()
    context = {
        'form': scheduledAction,
        'nodes': nodes
    }
    return render(request, "node/planification.html", context)

Представление работает нормально, но сколько узлов я проверяю, оно всегда сохраняет все узлы в поле «многие ко многим».Как сделать так, чтобы он отправлял только выбранные поля?

...