我开始使用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]