其他分享
首页 > 其他分享> > 0008 查询主表显示子表

0008 查询主表显示子表

作者:互联网

  查询出版社,并显示出该每个出版社出版的图书。

  之前已经写过PublisherInfoSerializer序列化器,现在增加一个图书序列化器,图书序列化器中有出版社序列化器,使用效果不好,所以,我们同样在出版社序列化器中增加一个图书序列化器,只显示图书名和出版日期

  特别要注意的是:图书和出版社的关联,是因为图书模型中的外键关联字段publisher,所以,通过图书找出版社,字段名必须设置为publisher_id,而通过出版社找图书,需要这个字段的关系字段名related_name。本例中图书中的外键publisher的关系字段related_name是book_list,故增加出版社的图书这个字段名必须是book_list。

  另外,因为出版社和图书是一对多的关系,所以,需要加参数many=True

class PublisherInfoSerializer(serializers.ModelSerializer):
    """
    出版社序列化器
    """

    class BookSerializer(serializers.ModelSerializer):
        class Meta:
            model = BookInfo
            fields = ('book_name', 'pub_date')

    book_list = BookSerializer(read_only=True, many=True)

    class Meta:
        model = PublisherInfo
        fields = ('pub_name', 'book_list')

  路由和视图,之前已配置好,不变。运行查看效果:

 

标签:主表,name,0008,出版社,book,子表,序列化,class,图书
来源: https://www.cnblogs.com/dorian/p/12450100.html