python - 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"),]
它连接到主要网址。
解决方案
您正在使用关系read_only
字段Foreign
,删除它,因为 read_only 不会显示它们
class SiteSerializer(serializers.ModelSerializer):
endDeviceList = DeviceSerializer(many = True)
推荐阅读
- javascript - 开/关自动滚动切换到简码wordpress内的猫头鹰轮播
- c - 是什么导致此“存储地址空间不足”错误?
- curl - 如何通过命令行从 gitlab 项目“上传”下载文件
- ajax - 如果所有环境都相同,为什么相同的 jsf 代码只会在一个环境中失败?
- java - JSF 选择项值无效
- javascript - A-Frame Kinematic-body 相机高度问题
- reactjs - 如何最好地在 PrivateRoute 后面包含带有 Gatsy 站点的 HTML?
- xsd - 如何导入 XSD 并向 Element 添加扩展
- swift - 使用来自另一个 VC 的委托方法在单独的视图控制器中设置属性 - Swift
- php - wp_insert_post 不插入自定义字段