首页 > 解决方案 > Django中的嵌套关​​系不起作用

问题描述

这些是我的模型:

class Site(models.Model):
    siteID = models.CharField(max_length=255, primary_key=True)

class EndDevice(models.Model):
    class Meta:
        unique_together = ("edevID", "siteID")

    edevID = models.CharField(max_length=255) 
    siteID = models.ForeignKey(Site, related_name='endDeviceList', on_delete=models.CASCADE)
    deviceCategory = models.BigIntegerField()

这是我的串行器:

class DeviceSerializer(serializers.ModelSerializer):
    class Meta:
        model = EndDevice
        fields = ("edevID", "siteID", "deviceCategory")
class SiteSerializer(serializers.ModelSerializer):
    endDeviceList = DeviceSerializer(many = True, read_only=True)

    class Meta:
        model = Site
        fields = ("siteID", "endDeviceList")

这是我的看法:

class IndividualSite(generics.RetrieveUpdateDestroyAPIView):
    '''
    PUT site/{siteID}/
    GET site/{siteID}/
    DELETE site/{siteID}/
    '''
    queryset = EndDevice.objects.all()
    serializer_class = SiteSerializer

我正在尝试使用此类获取/放置/删除结果,并且正在尝试获取所有具有相同 siteID 的 EndDevice 实例。但是我的序列化器只显示 siteID 而没有显示 endDeviceList (应该有模型 EndDevice 的瞬间)

问题与此链接非常相​​似:django rest-farmework nested Relations

我一直在尝试不同的方法来序列化对象,我认为这可能是最聪明的方法,但确实不成功。任何帮助将不胜感激。urls.py: urlpatterns = [

urlpatterns = [path('site/<str:pk>/', IndividualSite.as_view(), name = "get-site"),]

它连接到主要网址。

标签: pythondjango

解决方案


您正在使用关系read_only字段Foreign,删除它,因为 read_only 不会显示它们

class SiteSerializer(serializers.ModelSerializer):
    endDeviceList = DeviceSerializer(many = True)

推荐阅读