【问题标题】:Django Rest Framework : Nested Serializer not workingDjango Rest Framework:嵌套序列化程序不起作用
【发布时间】:2023-03-24 15:23:01
【问题描述】:

我几乎尝试了所有方法,但无法达到这一点

model.py 文件


class RecievingImages(models.Model):
     """Original and Masked Images"""
    ....
    name                        = models.CharField(max_length = 100, unique = True, primary_key=True)
    area                        = models.IntegerField()
    number                      = models.IntegerField()
    agency_name                 = models.CharField(max_length=100, default='general')
    rawImage                    = models.ImageField(upload_to=imageNameForRawImage,)
    ...

class UpdationImages(models.Model):
    """ Update Image wrt name"""
    ....
    name                        = models.ForeignKey(RecievingImages, on_delete=models.PROTECT, related_name='updated')
    updated_image               = models.ImageField(upload_to=UpdatedImageFolder,)
    updated_image_url           = models.TextField(default='None')
   ....

serializer.py

class UpdatedImageSerializer(serializers.ModelSerializer):
  class Meta:
    model = UpdationImages
    fields = ('name', 'updated_image', 'updated_image_url')

class RecievingImagesSerializer(serializers.ModelSerializer):
  updated = UpdatedImageSerializer(many= True, read_only=True)
  class Meta:
    model = RecievingImages
    fields = ('updated','name','area','number','agency_name', rawImage)

我在模型中使用了related_name,并且还遵循文档以及many = True

但还是在serializer.dataupdated不显示

views.py

class MappingSinglePhoto(APIView):
    """ Mapping Single Image """
    def post(self, request):
        try:
            data = request.data
            # import pdb; pdb.set_trace()
            name_of_image = data['name']
            mapped_images_qs = UpdationImages.objects.select_related('name').filter(name = name_of_image)
            for image in mapped_images_qs:
                serializer = RecievingImagesSerializer(instance = image)
                pdb.set_trace()
                serializer.data
            # return Response(serializer.data)
        except Exception as e:
            print(e)

注意 如果我使用depth=1,那么它工作正常,但我不是在寻找深度显示的所有字段。

感谢和问候

【问题讨论】:

  • 您的序列化程序中似乎缺少 Meta
  • 我已经更新了问题,从代码复制粘贴出错了。
  • 您正在将 UpdationImages 实例传递给 RecievingImagesSerializer,它需要一个 RecievingImages 实例
  • 能否详细说明?
  • 天哪!你是对的,非常感谢:)

标签: django django-models django-rest-framework django-views django-serializer


【解决方案1】:

感谢@ArakkalAbu

查询views.py

有问题
class MappingSinglePhoto(APIView):
    """ Mapping Single Image """
    def post(self, request):
        try:
            data = request.data
            # import pdb; pdb.set_trace()
            name_of_image = data['name']
            mapped_images_qs = RecievingImages.objects.filter(name = name_of_image)
            for image in mapped_images_qs:
                serializer = RecievingImagesSerializer(instance = image)
                pdb.set_trace()
                serializer.data
            # return Response(serializer.data)
        except Exception as e:
            print(e)


【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-21
    • 1970-01-01
    • 2016-02-09
    • 2018-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多