Доступ к атрибутам/элементам формы в Django

Здравствуйте, у меня есть форма, и я пытаюсь сделать так, чтобы когда форма проверялась. Но перед сохранением. Она создаст новый экземпляр EC_Node и сохранит команду, заданную в Command_Form, не только в Command_Node, но и в EC_Nodes. Которые должны иметь отношения многие-к-одному с узлами Command_Node и которые должны записывать все команды, отправленные на узел command_node. Но это будет работать только если при вводе команды для командного_узла я также фиксирую ее в EC_узле. Что я не знаю, как именно сделать, хотя у меня есть некоторые идеи.

Итак, любой совет будет очень признателен. Соответствующий код следует.

Релевантные представления.py

def update(request, host_id):
    host_id = Command_Node.objects.get(pk=host_id)
    form = Command_Form(request.POST or None, instance=host_id)
    if form.is_valid():
        
        # Original suggestion was command_form = Command_Form.objects.first()
        command_form = form['host_id']
        command_form.EC_Node_set.all()  # <- not sure with all _ and Maj here
        
        form.save()
        return redirect('home')
    return render (request, 'update.html', {'host_id':host_id,'form':form})

forms.py

class Command_Form(ModelForm):
    class Meta:
        model = Command_Node
        fields = ('host_id','current_commands')

        host_id = forms.ModelChoiceField(
            required=True,
            queryset=Beacon.objects.all(),
            widget=forms.SelectMultiple(
                attrs={
                    'class': 'form-control'
                },
            )
        )

        current_comamnds = forms.ChoiceField(
            required=True,
            choices=CHOICES
        )

    def save(self, **kwargs):
        EC_Node.objects.create(
        command=self.cleaned_data["current_commands"],
        Command_node=self.instance
        )
        return super().save(**kwargs)

models.py

class Command_Node(models.Model):
    host_id = models.ForeignKey(Beacon, on_delete=models.CASCADE)
    current_commands = models.CharField(choices=CHOICES, max_length=50, null=True)
    
    def __str__(self):
        return str(self.host_id)

class EC_Node(models.Model):
    Command_node = models.ForeignKey(Command_Node, on_delete=models.DO_NOTHING)
    command = models.CharField(choices=CHOICES, max_length=50, null=True)

    def __str__(self):
        return str(self.Command_node)

Когда я пытаюсь обновить вещи через update-view, я получаю следующую ошибку:

'BoundField' object has no attribute 'EC_Node_set'

Вот мой вопрос здесь. Спасибо.

Данные, подтвержденные формами, доступны в атрибуте Form.cleaned_data. См. документацию .

Итак, вам нужно получить доступ к данным пользователя, используя этот словарь:

def update(request, host_id):
    host_id = Command_Node.objects.get(pk=host_id)
    form = Command_Form(request.POST or None, instance=host_id)
    if form.is_valid():
        
        # Original suggestion was command_form = Command_Form.objects.first()
        command_form = form.cleaned_data['host_id']
Вернуться на верх