Bonjour,

Je souhaite créer un formulaire de recherche afin de retrouver des éléments 
dans ma base de données.

Pour cela j'ai créé un simple formulaire avec une zone de saisie dans ma page 
search.html

Voici ce que cela donne : 
{% extends "base.html" %}
{% load static %}


{% block content %}
    
    <form method="POST" action="search">{% csrf_token %}
    
    <table border:0px>
      <tr>
                <td>{{ formSearch.nom.label }}</td>
                <td>{{ formSearch.nom }}</td>
        </tr>   
    </table>

    <p><input type="submit" value="Rechercher" name="search"/></p>
    </form>

        {% if result %}
                {% for c in result %}
                        <a href= '/customers/record/{{ c.id }}'>{{ c.nom 
}}</a><br>
                {% endfor %}
        {% endif %}

        
{% endblock %}


Dans views.py j'ai cette fonction :
def search(request):
    ctx = mainCtx
    result = []
    if request.method == 'POST':
        print(request.POST)

        if request.POST.get('nom'):
            val = request.POST.get('nom')
            for c in Customers.objects.filter(nom__icontains = val):
                result.append(c)

            ctx['result'] = result

    ctx['formSearch'] = FormSearch()

    return render(request, 'customer/search.html', ctx)



Lorsque je lance la commande python manage.py runserver, que je clique sur le 
lien me permettant d'accéder à la page search.html tout ce passe bien.
Ma recherche se fait correctement et je peux accéder à la page d'un client en 
cliquant sur son nom.

Par contre si je reclique sur le lien me permettant d'accéder à search.html, 
j'ai le message d'erreur suivant :

*Error during template rendering*
In template 
/home/charlie/Development/projet/projet/templates/customer/search.html, error 
at line *42*
*'Customers' object is not iterable*
*32*
      </tr>
*33*
      
*34*
   
*35*
    </table>
*36*

*37*

*38*
      <p><input type="submit" value="Rechercher" name="search"/></p>
*39*
    </form>
*40*

*41*

*42*
 *{% for c in result %}*
*43*
    <a href= '/customers/record/{{ c.id }}'>{{ c.nom }}</a><br>
*44*
 {% endfor %}
*45*

*46*

*47*
    <br><br>
*48*

*49*

*50*
    
*51*

*52*
     



Je cherche d'où cela peut venir mais je ne trouve pas.

Quelqu'un aurait-il une idée ou éventuellement un exemple d'une autre manière 
de faire ce que je cherche ?

D'avance merci

Charlie

_______________________________________________
django mailing list
[email protected]
http://lists.afpy.org/mailman/listinfo/django

Répondre à