Django - 如何达到关系领域
Django - How to reach relational field
我有 Patient 模型,它与 ICF 模型有多对多的关系。 ICF 模型具有多对一字段到 Unite 模型。在 Unite 模型中,我有 Unite 名称。我想获得分配给具有关系的 Patient 的 Unite 名称。我尝试为每个 Patient 找到 Unite 的名字。如果不止一个,我无法为那个人列出它们。这是我的代码。
这是我的病人模型。
class Patient (models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=255)
lastname = models.CharField(max_length=255, default="doe")
data = models.JSONField()
Intensivecare_form = models.ManyToManyField(Intensivecare_Form)
isDeleted = models.BooleanField(default=False)
这是我的 ICF 模型。
class Intensivecare_Form (models.Model):
id = models.AutoField(primary_key=True)
hospitals_id = models.ForeignKey(Hospital, on_delete=models.CASCADE)
formname = models.CharField(max_length=128)
data = models.JSONField()
unites_id = models.ForeignKey(Unite, on_delete=models.CASCADE)
最后,这是我的 Unite 模型
class Unite (models.Model):
id = models.AutoField(primary_key=True)
unitename = models.CharField(max_length=128)
在我的 views.py 文件中我有一个函数如下
def listPatients(request):
Patients = Patient.objects.all()
output = []
for patient in Patients:
unitename = []
icfinfo = serializers.serialize('json', patient.Intensivecare_form.all())
jsonicfinfo = json.loads(icfinfo)
unitename.append(jsonicfinfo)
output.append({'id': patient.id,
'fname': patient.name,
'lname': patient.lastname,
'data': patient.data,
'unitename': unitename,
})
return JsonResponse(output, safe=False)
这是输出的样子。我需要在 unitename
中访问 formname
0-> id, fname..., unitename-> 0 -> fields -> unitename
您的 ICForm 似乎只指向一个 Unite 对象。
也许试试这个来获取查询中的所有 ICForm。
而不是
unitename = []
icfinfo = serializers.serialize('json', patient.Intensivecare_form.all())
jsonicfinfo = json.loads(icfinfo)
unitename.append(jsonicfinfo)
尝试重命名 Intensivecare_form 模型重命名 unites_id 以统一——django 知道自动在 id 上 link 并调用它 unites_id 可能会导致命名冲突
Intensivecare_Form(models.Model):
unites = models.ForeignKey(Unites, on_delete=models.CASCADE)
要获取所有联合名称,只需在一次查询中获取即可
unite_names = list(patient.Intensivecare_form.all().values_list('unites__unitename', flat=True))
这应该适合你!祝你好运!
我有 Patient 模型,它与 ICF 模型有多对多的关系。 ICF 模型具有多对一字段到 Unite 模型。在 Unite 模型中,我有 Unite 名称。我想获得分配给具有关系的 Patient 的 Unite 名称。我尝试为每个 Patient 找到 Unite 的名字。如果不止一个,我无法为那个人列出它们。这是我的代码。
这是我的病人模型。
class Patient (models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=255)
lastname = models.CharField(max_length=255, default="doe")
data = models.JSONField()
Intensivecare_form = models.ManyToManyField(Intensivecare_Form)
isDeleted = models.BooleanField(default=False)
这是我的 ICF 模型。
class Intensivecare_Form (models.Model):
id = models.AutoField(primary_key=True)
hospitals_id = models.ForeignKey(Hospital, on_delete=models.CASCADE)
formname = models.CharField(max_length=128)
data = models.JSONField()
unites_id = models.ForeignKey(Unite, on_delete=models.CASCADE)
最后,这是我的 Unite 模型
class Unite (models.Model):
id = models.AutoField(primary_key=True)
unitename = models.CharField(max_length=128)
在我的 views.py 文件中我有一个函数如下
def listPatients(request):
Patients = Patient.objects.all()
output = []
for patient in Patients:
unitename = []
icfinfo = serializers.serialize('json', patient.Intensivecare_form.all())
jsonicfinfo = json.loads(icfinfo)
unitename.append(jsonicfinfo)
output.append({'id': patient.id,
'fname': patient.name,
'lname': patient.lastname,
'data': patient.data,
'unitename': unitename,
})
return JsonResponse(output, safe=False)
这是输出的样子。我需要在 unitename
中访问 formname0-> id, fname..., unitename-> 0 -> fields -> unitename
您的 ICForm 似乎只指向一个 Unite 对象。
也许试试这个来获取查询中的所有 ICForm。
而不是
unitename = []
icfinfo = serializers.serialize('json', patient.Intensivecare_form.all())
jsonicfinfo = json.loads(icfinfo)
unitename.append(jsonicfinfo)
尝试重命名 Intensivecare_form 模型重命名 unites_id 以统一——django 知道自动在 id 上 link 并调用它 unites_id 可能会导致命名冲突
Intensivecare_Form(models.Model):
unites = models.ForeignKey(Unites, on_delete=models.CASCADE)
要获取所有联合名称,只需在一次查询中获取即可
unite_names = list(patient.Intensivecare_form.all().values_list('unites__unitename', flat=True))
这应该适合你!祝你好运!