【问题标题】:How to serialize nested objects with related models?如何用相关模型序列化嵌套对象?
【发布时间】:2021-03-29 05:32:56
【问题描述】:

我对 DRM 真的很陌生,我必须解决问题 我有三个相关的模型。现在我想为相关患者的每个传感器值。我的模型看起来像:

    class Sensor(models.Model):
        sensor_name = models.CharField(max_length=200, primary_key=True)
        sensor_refreshRate = models.FloatField()
        sensor_prio = models.IntegerField(choices=[
            (1, 1), (2, 2), (3, 3), (4, 4), ], default='1')
        sensor_typ = models.CharField(
            max_length=200, 
            choices=[
                ('bar', 'bar'), ('pie', 'pie'), 
                ('line', 'line'), ('text', 'text'), 
            ], 
            default='bar'
        )
    
    class Patient(models.Model):
        firstName = models.CharField(max_length=200)
        lastName = models.CharField(max_length=200)
        age = models.IntegerField()
        doctor = models.ForeignKey(
            settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
        sensor = models.ManyToManyField(Sensor)
      
    
    class Value(models.Model):
        value_date = models.DateTimeField(auto_now_add=True)
        value = models.FloatField()
        sensor = models.ForeignKey(Sensor, on_delete=models.CASCADE)

现在我想发送一个 JSON 文件,如下所示:

[
    {
        "value": 445.0,
        "sensor": "Pressure",
        "patient": 3
    },
    {
        "value": 478.0,
        "sensor": "Temperature",
        "patient": 3
    }
]

现在我不确定如何序列化我的 JSON。

提前致谢

【问题讨论】:

    标签: json django serialization django-rest-framework


    【解决方案1】:

    您的数据模型似乎不完整。 Value 模型和 Patient 模型之间没有联系。 所以首先我建议修改Value 模型

    class Value(models.Model):
        value_date = models.DateTimeField(auto_now_add=True)
        value = models.FloatField()
        sensor = models.ForeignKey(Sensor, on_delete=models.CASCADE)
        patient = models.ForeignKey(Patient, on_delete=models.CASCADE)
    

    然后你可以创建一个查询集

    qs = Value.objects.filter(.....).values(
        'patient_id', 'sensor__sensor_name', 'value'
    )
    

    然后编写你的序列化器

    【讨论】:

    • 抱歉,我忘了提及我想为现有患者和现有传感器添加值。我添加了价值和患者之间缺失的联系。现在我可以为患者和特定传感器创建新值,但仅限于一个传感器。我如何发送一个 JSON,其中包含针对特定患者的一堆传感器?
    猜你喜欢
    • 2013-05-05
    • 2017-08-04
    • 1970-01-01
    • 2013-11-27
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多