我想用id打开对象,我有两个类,一个是其他的外键,现在我不知道如何更改我的视图功能这就是我正在做的事情。
models.py
from django.db import models
class Movie(models.Model):
name= models.CharField(max_length = 100)
movie_poster = models.FileField()
def __str__(self):
return self.name
class Songs(models.Model):
movie = models.ForeignKey(Movie, default= 1)
song_title = models.CharField(max_length=20)
song_list = models.FileField()
def __str__(self):
return self.song_title
views.py
from django.shortcuts import render_to_response, get_object_or_404
from .models import Movie, Songs
def Movie_Songs(request, id):
#movies = Movie.objects.all()
#songs = Songs.objects.all()
instance=get_object_or_404(Movie, id=id)
context = {
"name" : instance.name,
"movie_poster" : instance.movie_poster,
"movie" : instance.movie,
"song_title": instance.song_title,
"song_list": instance.song_list,
}
return render_to_response('profile_page.html', context)
urls.py
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^profile/(?P<id>/d+)/$',views.Movie_Songs),
]
HTML
<h1>{{context.name}}</h1>
{% for song in context %}
<ol>
<li>
<a href="{{song.song_list.url}}" target="_self"><h4>{{song.song_title}}</h4></a>
</li>
</ol>
{% endfor %}
当我点击一个对象时,上面的html会打开,对象有这个
<a href="profile/" target="new"><img width="170px" height="170px" src="{{ movie_item.movie_poster.url }}"></a>
<h4>{{ movie_item.movie }}</h4>
答案 0 :(得分:0)
使用django-rest framework使用serializations将模型数据转换为正确的JSON格式。
使用ModelSerializers来减少和有效编码。 其他有用的链接:foreign key field; FileField/ ImageField
答案 1 :(得分:0)
您忘记在网址id
中提供该电影的href
。希望现在有效。
<a href="profile/{{ movie_item.id }}/" target="new"><img width="170px" height="170px" src="{{ movie_item.movie_poster.url }}"></a>
<h4>{{ movie_item.movie }}</h4>
以上代码应该可以正常运行。但如果您有命名空间的应用程序,则正确的方法如下。
项目网址文件
urlpatterns = [
url(r'movie/', include('movie_app.urls', namespace='movie_app_namespace')),
]
电影应用网址文件
urlpatterns = [
url(r'^profile/(?P<id>/d+)/$',views.Movie_Songs, name=''),
]
模板文件
<a href="{% url 'movie_app_namespace:movie_profile' %}" target="new"><img width="170px" height="170px" src="{{ movie_item.movie_poster.url }}"></a>
<h4>{{ movie_item.movie }}</h4>