Django rest frame从PK被引用为FK的所有表中获取值

2024-09-29 23:23:42 发布

您现在位置:Python中文网/ 问答频道 /正文

对于我的父模型-StudioProfile,其他模型与StudioProfile具有外键关系。当向我的StudioProfile序列化程序发出API请求时,如何获取所有相关的表数据。下面是我的模型、视图和序列化程序

class StudioProfile(models.Model):
    name = models.CharField(max_length = 120)
    address_1 = models.CharField(max_length = 200)
    address_2 = models.CharField(max_length = 200)

class StudioServices(models.Model):

    studio_profile = models.ForeignKey(StudioProfile, related_name = "services")
    service_name = models.CharField(max_length = 50)

class StudioPicture(models.Model):

    studio_profile  = models.ForeignKey(StudioProfile, related_name = "pic_of_studio")
    picture = models.ImageField(upload_to = 'img_gallery', null = True, blank = True)

你知道吗序列化程序.py你知道吗

class StudioServicesSerializer(serializers.ModelSerializer):
    class Meta:
        model = StudioServices
        fields = ('studio_profile',   'service_name')

class StudioPicSerializer(serializers.ModelSerializer):
     class Meta:
         model = StudioPicture
         fields = ('picture') 

class StudioProfileSerializer(serializers.ModelSerializer):
    services = StudioServicesSerializer(source = "StudioServices")
    pic_of_studio = StudioPicSerializer(source = "StudioPicture")
    class Meta:
        model = StudioProfile
        fields = ( 'address_1', 'address_2','services','pic_of_studio' )

你知道吗视图.py你知道吗

class StudioProfile(ListAPIView):
    permission_classes = (ReadWithoutAuthentication,)
    serializer_class = StudioProfileSerializer
    queryset = StudioProfile.objects.select_related().filter(id = 1)

我无法得到数据。我做错什么了?当我请求StudioProfile类时,如何获取所有相关条目。你知道吗

回溯:

Got AttributeError when attempting to get a value for field service_name on serializer StudioProfileSerializer. The serializer field might be named incorrectly and not match any attribute or key on the StudioProfile instance. Original exception text was: 'StudioProfile' object has no attribute 'StudioServices'.


Tags: name模型程序model序列化addressmodelsservice
1条回答
网友
1楼 · 发布于 2024-09-29 23:23:42

我认为您可能需要在StudioProfileSerializer中包含many=true并将源代码更改为be related\u名称:

class StudioProfileSerializer(serializers.ModelSerializer):
    services = StudioServicesSerializer(many = true, source = "services")
    pic_of_studio = StudioPicSerializer(many = true, source = "pic_of_studio")
    class Meta:
        model = StudioProfile
        fields = ( 'address_1', 'address_2','services','pic_of_studio' )

相关问题 更多 >

    热门问题