json – 如何限制Django Rest框架中的记录数量反向关系

前端之家收集整理的这篇文章主要介绍了json – 如何限制Django Rest框架中的记录数量反向关系前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我开始使用Django Rest框架,它的行为相当不错.我所有的东西都按照我想要的方式工作.我遇到了一个我没有得到答案的问题.

我正在使用反向关系.

楷模

class Province(models.Model):
    name = models.CharField(max_length=50)
    intro = models.CharField(max_length=1000,null=True,blank=True)
    description = models.TextField(max_length=10000,blank=True)

class Picture(models.Model):
    name = models.TextField("Title",max_length=10000,blank=True)
    pro = models.ForeignKey(Province,verbose_name="Province")

当我编写省的反向关系序列化程序,例如为一个省.

查看

ProToPicturesSerial(node,many=False).data

我得到这个省的所有照片.我想得到一些照片,也许最后3,或最近添加的5张照片.

我如何限制图片实例的数量?因为随着图片记录中的数字增长,应用程序往往会变慢.

串行

class ProToPicturesSerial(serializers.ModelSerializer):
    pro_pictures = PictureSerializer(many=True)

    class Meta:
        model = Province
        fields = ('id','name','intro','description','pro_pictures')

让我知道,如果我缺少一些明显的东西.

解决方法

您可以将PictureSerializer的源属性指向仅返回3个相关图片的省份方法
class ProToPicturesSerial(serializers.ModelSerializer):
    pro_pictures = PictureSerializer(many=True,source='first_three_pics')

    class Meta:
        model = Province
        fields = ('id','pro_pictures')

class Province(models.Model):
    name = models.CharField(max_length=50)
    intro = models.CharField(max_length=1000,blank=True)

    def first_three_pics(self):
        return self.picture_set.all()[:3]

猜你在找的JavaScript相关文章