1
resposta

Como utilizar o ManyToMany

Eu tenho um modelo chamado viagens e nele o campo embarcacoes. embarcacoes = models.ManyToManyField(Embarcacao) Quando utilizo o admin ele me permite escolher mais de uma embarcao. Mas quando utilizo um form ele só permite escolher uma embarcao. O que devo fazer para me permitir multipla escolha ? segue meu form

class ViagemForm(forms.ModelForm):
    class Meta:
        model = Viagem
        fields = '__all__'

    def __init__(self, *args, **kwargs):
        super(ViagemForm, self).__init__(*args, **kwargs)
        self.fields['dataCriacao'].disabled = True
        self.fields['dataCriacao'].initial = datetime.today
        self.fields['dataDespacho'].widget = DatePicker()
        self.fields['dataInicio'].widget = DatePicker()
        self.fields['dataFimPrevisto'].widget = DatePicker()
        self.fields['dataFim'].widget = DatePicker()
        self.fields['informacoes'].widget = Textarea(
            attrs={'cols': 80, 'rows': 10})
        self.fields['embarcacoes'] = forms.ModelMultipleChoiceField(
            widget=forms.widgets.SelectMultiple, queryset=Embarcacao.objects.all())
1 resposta

Oii Cláudio, como você está?

Sinto muito pela demora em obter um retorno.

Testei o código do seu formulário relacionado ao ModelMultipleChoiceField e foi possível selecionar mais de uma opção. Observe se ao selecionar você está apertando a tecla Ctrl e o botão esquerdo do mouse para selecionar as opções que você deseja. Elas ficarão destacadas com a cor azul, por exemplo:

fotoforum

Talvez fique mais claro se você utilizar o CheckboxSelectMultiple ao invés do SelectMultiple, através dessa propriedade será possível marcar a "caixinha" de cada opção da seguinte forma:

image

Se ainda sim não obter o resultado esperado, compartilhe por favor o código do seu modelo de Viagens e de Embarcacao. E caso queira adicionar algum print, poste a imagem no Igmur e deixe o link na resposta.

Qualquer dúvida estou por aqui, tá bom?

Abraços e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software