Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django REST框架多个序列化程序_Python_Json_Django_Rest_Django Rest Framework - Fatal编程技术网

Python Django REST框架多个序列化程序

Python Django REST框架多个序列化程序,python,json,django,rest,django-rest-framework,Python,Json,Django,Rest,Django Rest Framework,我已经搜索了现有的问题/答案、DRF文档,并尝试了多个示例来了解我的研究现状 我遇到的问题是ShowtimeSerializer没有得到填充 我解析了一些API以获得此JSON,其中包含放映时间的电影详细信息: {u'poster_path': u'/bEAoNvtqvO0c2lItNkKlKUqhPuw.jpg', u'production_countries': [{u'iso_3166_1': u'US', u'name': u'United States of America'}],

我已经搜索了现有的问题/答案、DRF文档,并尝试了多个示例来了解我的研究现状

我遇到的问题是ShowtimeSerializer没有得到填充

我解析了一些API以获得此JSON,其中包含放映时间的电影详细信息:

{u'poster_path': u'/bEAoNvtqvO0c2lItNkKlKUqhPuw.jpg', u'production_countries': [{u'iso_3166_1': u'US', u'name': u'United States of America'}], u'revenue': 0, u'overview': u"After moving to a new town, troublemaking teen Jim Stark is supposed to have a clean slate, although being the new kid in town brings its own problems. While searching for some stability, Stark forms a bond with a disturbed classmate, Plato, and falls for local girl Judy. However, Judy is the girlfriend of neighborhood tough, Buzz. When Buzz violently confronts Jim and challenges him to a drag race, the new kid's real troubles begin.", 'youtube': 'Rwh9c_E3dJk', 'is_3d': False, u'video': False, u'id': 221, 'category': u'C', u'genres': [{u'id': 18, u'name': u'Drama'}], u'title': u'Rebel Without a Cause', u'tagline': u'The bad boy from a good family.', u'vote_count': 124, u'homepage': u'', u'belongs_to_collection': None, u'original_language': u'en', u'status': u'Released', u'spoken_languages': [{u'iso_639_1': u'en', u'name': u'English'}], 'tmdb_id': 221, u'imdb_id': u'tt0048545', u'adult': False, u'backdrop_path': u'/aFrfCpEwyyAhIbooDANgWiFzV9R.jpg', u'production_companies': [{u'name': u'Warner Bros.', u'id': 6194}], u'release_date': u'1955-10-27', u'popularity': 0.144839, u'original_title': u'Rebel Without a Cause', u'budget': 1500000, u'vote_average': 7.5, 'showtimes': [[{'showdate': datetime.date(2016, 9, 4)}, {'showtime': '10:00AM'}], [{'showdate': datetime.date(2016, 9, 7)}, {'showtime': '10:00AM'}]], u'runtime': 111}
views.py 序列化程序.py models.py
请求.数据
包含用户应用程序信息,作为一个带有ID的数组:

{ "user":[1,2,3], "app":[1,2] }
views.py(或api.py) 序列化程序.py models.py
最后,我解决了我这边的问题,我能够理解如何相应地更新我的结构。

请说明您得到了什么以及您期望得到什么。第二条声明明确指出,放映时间没有增加。我所期望的是,它们将填充Showtime模型所具有的字段;showdate和showtime以及包含在JSON中的showtime。
from rest_framework import serializers
from .models import Film, Showtime

class ShowtimeSerializer(serializers.ModelSerializer):
    class Meta:
        model = Showtime

class FilmSerializer(serializers.ModelSerializer):
    showtimes = ShowtimeSerializer(many=True, read_only=True)

    class Meta:
        model = Film
from __future__ import unicode_literals

from django.db import models

class Showtime(models.Model):
    showdate = models.DateField()
    showtime = models.TimeField()

class Film(models.Model):
    SERIES = (
        ('F', 'Featured'),
        ('L', 'Late Night Series'),
        ('C', 'Classic Movie Series'),
        ('K', 'Prytania Kids Series'),
    )
    imdb_id = models.CharField(max_length=15)
    tmdb_id = models.IntegerField()
    title = models.CharField(max_length=200)
    overview = models.TextField()
    release_date = models.DateField()
    backdrop_path = models.CharField(max_length=200)
    poster_path = models.CharField(max_length=200)
    runtime = models.IntegerField()
    category = models.CharField(max_length=1, choices=SERIES)
    youtube = models.CharField(max_length=20)
    is_3d = models.BooleanField(default=False)
    tagline = models.CharField(max_length=200)
    vote_average = models.DecimalField(max_digits=4, decimal_places=2)
    showtimes = models.ManyToManyField(Showtime)

    def __str__(self):
        return self.title
{ "user":[1,2,3], "app":[1,2] }
class SampleViewSet(APIView):

    def post(self, request):
        serializer = TeamSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
class TeamSerializer(serializers.ModelSerializer):
    class Meta:
        model = Team
        fields = ['user', 'app']

class AppSerializer(serializers.ModelSerializer):
    class Meta:
        model = App
        fields = ['name', 'description']
class App(models.Model):
    name = models.CharField(max_length=150, default='')
    description = models.TextField(verbose_name='App Description')

    def __str__(self):
        return f'{self.id} - {self.name}'

class Team(models.Model):
    user = models.ManyToManyField(User)
    app = models.ManyToManyField(App)

    def __str__(self):
        return f'Team ID: {self.id}'