2017-06-25 4 views
0

Ich bin noch ziemlich neu in Django und ich stieß auf ein Problem, das ich selbst mit Google schwer herausfinden kann oder vielleicht sehe ich keine Lösung. So habe ich ein Modell namens movieTitles etwa so:Django Queryset für Listenelement

class movieTitle(models.Model): 
    title = models.Charfield(max_length=50) 
    image = models.URLField(max_length=100) 
    description = models.TextField() 
    year = models.PositiveSmallIntegerField() 
    director = models.Charfield(max_length=50) 

Dann habe ich meine Ansicht, wie so:

from Movie.models import movieTitles 

def movieListView(request): 
    movie = movieTitle.objects.all() 
    return render(request, 'index.html', {'movies':movie}) 

und meine html als so:

<body> 
    {% for info in movies %} 
     <a href="#">{{info.title}}</a> 
    {% endfor %} 
</body> 

Was ich es will Ist der Benutzer einmal auf die Filmliste gegangen und entscheidet er sich, auf einen bestimmten Film zu klicken, wie kann ich den Benutzer zu einer anderen HTML-Seite führen, die die info.image, info.description, info.year, an zeigt d info.director gehören zu dem Film, den sie zum Klicken gewählt haben. Ich weiß, wie man die Vorlage schreibt und alles, was aber verwirrt ist, ist, wie kann ich die Vorlage mit {{info.}}} Schreiben und muss nicht für jeden Film eine Vorlage erstellen, sondern die vorherige verwenden Vorlage, in der der Benutzer einen Film auswählt, um die Details in der nächsten Vorlage zu erstellen.

Antwort

1

Sie sollten eine neue Ansicht erstellen, die einen ausgewählten Film erhält und alle Informationen darüber abruft.

# Add to urls.py 

urlpatterns += [url(r'^detail/(?P<pk>\d+)/$', views.movie_detail, name='movie_detail')] 

# Add to views.py 

from django.shortcuts import get_object_or_404 

def movie_detail(request, pk): 
    movie = get_object_or_404(movieTitle, pk=pk) 
    return render(request, 'movie_detail.html', {'movie': movie}) 

# movie_detail.html 

<h1>Title: {{ movie.title }}</h1> 
<img src="{{ movie.image }}"> 
{{ movie.description|linebreaks }} 
<p>Year: {{ movie.year }}</p> 
<p>Director: {{ movie.director }}</p> 

Letzte, was Sie tun sollten, ist richtig url in html mit Filmliste

# Your initial html 
<body> 
    {% for movie in movies %} 
     <a href="{% url 'movie_detail' movie.pk %}">{{ movie.title }}</a> 
    {% endfor %} 
</body> 

Und das ist alles

-1

fügen Sie ein eindeutiges Feld in ur-Modell wie id FOREG setzen: -

class movieTitle(models.Model): 
    id = models.Charfield(max_length=50) 
    title = models.Charfield(max_length=50) 
    image = models.URLField(max_length=100) 
    description = models.TextField() 
    year = models.PositiveSmallIntegerField() 
    director = models.Charfield(max_length=50) 

und amke eine URL wie folgt: suppompose App Name ist:

app_name = 'movie' 

url(r'^movie-list/show/(?P<university_id>[0-9]+)/$', view.view_list, name='view-list'),

und ur-URL in Vorlage wie folgt passieren:

<body> 
    {% for info in movies %} 
     <a href="{{movie:view-list}} info.id">{{info.title}}</a> 
    {% endfor %} 
</body>