1
resposta

Como inserir as categorias em um select option

Prezados, estou com a seguinte dificuldade, eu criei um select option no template de criar receita para mostrar todas as categorias cadastradas no banco, de forma que toda receita nova so poderá utilizar uma das categorias já existentes, no entando não estou conseguindo listar essas categorias no meu select option, agradeço qualquer ajuda.

Models.py

class Categoria(models.Model):
    nome_da_categoria = models.CharField(max_length=50)
    date_categoria = models.DateTimeField(default=datetime.now, blank=True)

    def __str__(self) -> str:
        return self.nome_da_categoria

class Receita(models.Model):
    pessoa = models.ForeignKey(User, on_delete=models.CASCADE)
    nome_receita = models.CharField(max_length=200)
    ingredientes = models.TextField(max_length=1000)
    modo_preparo = models. TextField(max_length=5000)
    tempo_de_preparo = models.IntegerField()
    rendimento = models.CharField(max_length=100)
    categoria = models.ForeignKey(Categoria, on_delete=models.CASCADE)
    date_receita = models.DateTimeField(default=datetime.now, blank=True)
    foto_receita = models.ImageField(upload_to='fotos/', blank=True)
    publicada = models.BooleanField(default=False)

    def __str__(self):
        return self.nome_receita

urls.py

urlpatterns = [
    path('', index, name='index'),
    path('<int:receita_id>', receita, name='receita' ),
    path('buscar', busca, name='buscar'),
    path('cria/receita', cria_receita, name='cria_receita'),
    path('deleta/<int:receita_id>', deleta_receita, name='deleta_receita'),
    path('edita/<int:receita_id>', edita_receita, name='edita_receita'),
    path('atualiza_receita', atualiza_receita, name='atualiza_receita'),
    path('categoria',categoria_list, name='categoria')
]

view de categoria

def categoria_list(request):
    categoria = Categoria.objects.all()

    categoria_a_exibir = {
        'categoria': categoria
    }

    return render(request, 'receitas/cria_receita.html', categoria_a_exibir)

template de criar receita

<div class="col-12 col-lg-3">
       <label for="file"><b>Categoria da receita</b></label>
       <!-- <input type="text" class="form-control" name="categoria" placeholder="Ex. Sucos e bebidas" required> -->
       <select class="form-control form-control-sm">
        {% if categoria %}
            {% for item in categoria %}
                <option>{{ item.nome_da_categoria }}</option>
            {% endfor %}
         {% else %}
         {% endif %}
     </select>
   </div>
1 resposta

Olá José, como você está?

Peço desculpas pela demora no retorno.

Nos cursos de Django que existem atualmente na plataforma, a busca ou seleção por categorias não é demonstrada. No entanto, uma moderadora da Alura respondeu como alcançar este objetivo de forma bem ilustrativa e poderá te auxiliar na implementação, recomendo a leitura:

Me coloco à disposição caso fique algum percalço na execução ou dúvidas.

Abraços e bons estudos!