我开始使用Django Rest Framework,并且表现良好。我按照自己的意愿使所有工作正常进行。我遇到一个无法解决的问题。
我正在使用反向关系。
楷模
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, null=True, blank=True)
class Picture(models.Model):
name = models.TextField("Title", max_length=10000, null=True, blank=True)
pro = models.ForeignKey(Province, verbose_name="Province")
当我编写省的反向关系序列化器时,例如一个省。
观看次数
ProToPicturesSerial(node, many=False).data
我得到了该省的所有
pictures
。我想获取一些图片,可能是最后3张,或者最近添加的5张图片。如何限制图片实例的数量?因为随着图片记录中数字的增加,应用程序将趋向于变慢。
序列化器
class ProToPicturesSerial(serializers.ModelSerializer):
pro_pictures = PictureSerializer(many=True)
class Meta:
model = Province
fields = ('id', 'name', 'intro', 'description', 'pro_pictures')
让我知道我是否缺少明显的东西。
最佳答案
您可以将source
的PictureSerializer
属性指向省上仅返回3张相关图片的方法:
class ProToPicturesSerial(serializers.ModelSerializer):
pro_pictures = PictureSerializer(many=True, source='first_three_pics')
class Meta:
model = Province
fields = ('id', 'name', 'intro', 'description', 'pro_pictures')
和
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, null=True, blank=True)
def first_three_pics(self):
return self.picture_set.all()[:3]