2016-03-29 5 views
0

Das ist mein Modell:Schleife in django Ansichten von „str“ Methode

class People(models.Model): 
    name_text = models.CharField(max_length=200) 
    surname_text = models.CharField(max_length=200) 

    def __str__(self): 
     return "%s %s" % (self.name_text, self.surname_text) 

Das ist meine Ansicht ist:

def index(request): 
    people_list = People.objects.all() 
    ######output = ', '.join([p.name_text for p in people_list]) 
    output = ', '.join([People for p in people_list]) 
    return HttpResponse(output) 

ich eine Seite sehen will, das alle Menschen mit dem Namen zeigt und auch Nachname, der sich in der Datenbank befindet, geteilt durch ",", aber ich weiß nicht, wie ich diese Schleife machen soll. Es ist wahrscheinlich, dass ich die def "str" der Klasse People verwenden muss, aber ich weiß nicht wie.

Kann mir jemand helfen?

+0

Warum schließen Sie sich ihnen überhaupt an? Sie sollten stattdessen eine Vorlage haben, in der Sie über das People * -Modell iterieren können * s – Sayse

Antwort

1

Versuchen Sie Folgendes, das die People.__str__() für jeden Eintrag in Ihrem people_list aufruft.

def index(request): 
    people_list = People.objects.all() 
    output = ', '.join([str(p) for p in people_list]) 
    return HttpResponse(output) 

Sie haben einen Fehler in Ihrem ursprünglichen Schnipsel, wenn Sie versuchen, die Liste der Personen als String zu verbinden:

output = ', '.join([People for p in people_list]) 

Sie eine Liste von instanziierten Klassen zu erzeugen (nicht die resultierenden Instanzen oder Objekte dieser Klassen) und ersetzt Ihre Liste von Personen.

+0

Danke, dass es sehr nützlich ist! –

Verwandte Themen