这些是我的模特在这里:
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()
这是我的serilaizer:
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 relationships。
我一直在尝试不同的方法来序列化对象,我认为这可能是最聪明的方法,但确实没有成功。任何帮助将不胜感激。 urls.py: urlpatterns = [
urlpatterns = [path('site/<str:pk>/', IndividualSite.as_view(), name = "get-site"),]
它已连接到主要网址。
答案 0 :(得分:1)
您将read_only
字段用于Foreign
关系,请删除该字段,因为read_only不会显示它们
class SiteSerializer(serializers.ModelSerializer):
endDeviceList = DeviceSerializer(many = True)