【发布时间】:2014-11-12 11:17:12
【问题描述】:
我是 django rest 框架的新手
我对如何使用 ManyToManyField 获取关系值有疑问
这是我的代码:
models.py
class Movie(models.Model):
link = models.URLField()
title = models.CharField(max_length=255, null=True)
class MovieTheater(models.Model):
movietheater = models.ManyToManyField(Movie,null=True,blank=True,through="MovieShowtime")
movie_theater = models.CharField(max_length=255, null=True)
tel = models.CharField(max_length=255, null=True)
class MovieShowtime(models.Model):
theater = models.ForeignKey( MovieTheater, null=True,blank=True,related_name = 'theater' )
movie = models.ForeignKey( Movie, null=True,blank=True,related_name = 'movie' )
time = models.TextField(null=True,blank=True)
serialize.py
class MovieSerializer(serializers.ModelSerializer):
class Meta:
model = Movie
fields = ('link', 'title')
class MovieShowtimeSerializer(serializers.ModelSerializer):
movieid = serializers.CharField(source='movie_id')
theaterid = serializers.CharField(source='theater_id')
class Meta:
model = MovieShowtime
fields = ('movieid', 'theaterid','time' )
class TheaterSerializer(serializers.ModelSerializer):
movieintheater = serializers.HyperlinkedRelatedField(many=True,source='movietheater', view_name='movie_detail')
time = MovieShowtimeSerializer(many=True, read_only=True, source='theater')
class Meta:
model = MovieTheater
fields = ('movieintheater','time','tel' )
views.py
class TheaterList(object):
queryset = MovieTheater.objects.all()
serializer_class = TheaterSerializer
当我去url(r'^theaters/$', TheaterList.as_view())
结果是这样的:
{
"movieintheater": [
"http://127.0.0.1:8000/movies/159",
"http://127.0.0.1:8000/movies/160",
],
"time": [
{
"movieid": 159,
"theaterid": 3,
"time": "12 : 50 PM | 06 : 20 PM"
},
{
"movieid": 160,
"theaterid": 3,
"time": "12 : 40 PM | 04 : 50 PM | 09 : 00 PM"
},
],
"tel": "1234567890"
},
我想知道如何显示这样的值:
直接将数字(movieid,theatid) 替换为模型信息
请教我。谢谢
{
"movieintheater": [
"http://127.0.0.1:8000/movies/159",
"http://127.0.0.1:8000/movies/160",
],
"time": [
{
"movieid.title": 'movie1',
"theaterid": 3,
"time": "12 : 50 PM | 06 : 20 PM"
},
{
"movieid.title": 'movie2',
"theaterid": 3,
"time": "12 : 40 PM | 04 : 50 PM | 09 : 00 PM"
},
],
"tel": "1234567890"
},
【问题讨论】:
标签: django django-rest-framework