自定义序列化程序的字段显示

2024-09-30 16:23:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个连载:

class MovieShowtimeSerializer(serializers.ModelSerializer):
    class Meta:
        model = MovieShowtime
        fields = ( 'movietime', 'mvtype', )

结果是:

^{pr2}$

我想知道它能否直接显示为: 请帮帮我谢谢

        {
            "mvtype": "3D":{
                            "movietime": "2014-12-30T01:45:00Z", 
                            "movietime": "2014-12-30T06:00:00Z", 
                            "movietime": "2014-12-30T10:20:00Z", 
                            }

        }

在模型.py在

class Showtime(models.Model):
    movietime       = models.DateTimeField(null=True,blank=True)
    mvtype          = models.CharField(max_length=255, blank=True)   

更新:我编辑下面的代码:

class MovieShowtimeSerializer(serializers.ModelSerializer):
    newshowtimes = serializers.SerializerMethodField('get_newshowtimes')
    def get_newshowtimes(self, obj):
        movietimes={}
        getmovietype = obj.mvtype
        if obj.mvtype not in movietimes:
            movietimes[getmovietype] = []
        movietimes[getmovietype].append(obj.movietime.strftime('%Y-%m-%dT%H:%M:%S.%fZ'))
        return movietimes
    class Meta:
        model = MovieShowtime
        fields = ( 'newshowtimes', )

结果:

"results": [
    {
        "newshowtimes": {
            "\u6578\u4f4d": [
                "2014-12-29T02:20:00.000000Z"
            ]
        }
    }, 
    {
        "newshowtimes": {
            "\u6578\u4f4d": [
                "2014-12-29T06:25:00.000000Z"
            ]
        }
    },       

但结果仍然不是我想要的 如何将这两个newshowtimes结合起来:

"results": [
    {
        "newshowtimes": {
            "\u6578\u4f4d": [
                "2014-12-29T02:20:00.000000Z"
                "2014-12-29T06:25:00.000000Z"
            ]
        }
    },       

请帮帮我谢谢!在


Tags: trueobjmodelsmetaclassserializersmodelserializermovietime