6
respostas

autocomplete com Django

Como eu faço um autocomplete no em um dos fields que é uma foreingKey no formulário do django sem ser no admin? Sempre me mandam exemplos de javascript com select2 ou autocomplete mas a parte de django não é demonstrada. Por favor, preciso de ajuda para resolver isso. Um direto ao ponto ou um exemplo completo.

6 respostas

Fala Alcimar, como vai?

Desculpe mas não entendi sua pergunta. Pode por gentileza descrever como está esse formulário, qual campo deseja o autocomplete e de onde vem essas informações?

As classes

class Mandado(models.Model):
    numero_mandado = models.CharField(max_length=25, null=False, blank=False, verbose_name='Número do Mandado',
                                      unique=True)
    pessoa = models.ForeignKey(Pessoa, null=True, blank=True, verbose_name='Alvo do mandado',
                               on_delete=models.DO_NOTHING)

class Pessoa(models.Model):
    nome = models.CharField(max_length=255, null=False, blank=False, verbose_name='Nome')
    nome_social = models.CharField(max_length=255, null=True, blank=True, verbose_name='Nome Social')
    cpf = models.CharField(max_length=14, unique=True, null=True, blank=True, verbose_name='CPF')

Meu formulário de mandado precisa ter um autocomplete, ou select2 de pessoa

class MandadoForm(forms.Form):
    numero_mandado = forms.CharField(max_length=25, label='Número do mandado')
    pessoa = forms.ModelChoiceField(queryset=Pessoa.objects.none(), label='Alvo do mandado',
                                    widget=forms.TextInput(attrs={'class': 'form-control autocomplete'}))

html do formulário

<div class="card">
    <div class="card-header bg-secondary">
        <h3 class="card-title">Formulário de Mandado</h3>
    </div>
    <form action="" method="POST" enctype="multipart/form-data">
        {% csrf_token %}
        <div class="card-body">
            <div class="row">
                <div class="col-md-4">
                    {{form.numero_mandado}}
                </div>
         <div class="col-md-6">
        select2 
        </div>
</div>

como seria o javacript javascript ?????? view ???? url ????

Se tiver um exemplo completo de alguma biblioteca com o django-autocomplete-light serve também

Fala Alcimar, como vai?

Obrigado por compartilhar o seu código. Tem um exemplo neste link do django-autocomplete-light utilizando a tag field que pode te ajudar, separando o código da view e do model.

Em relação ao javascript, este curso vai te ajudar bastante.

Vou verificar e depois retorno se consegui. Obrigado

Creio que o auto-complete-light não funcione no django 3.