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


让我知道我是否缺少明显的东西。

最佳答案

您可以将sourcePictureSerializer属性指向省上仅返回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]

10-07 15:58