我需要创建两个Django模型:“患者”和“胚胎”。
“患者”属性: 名(字符串) 姓氏(字符串) 电话号码(字符串) 电子邮件(字符串) 创建于(日期时间)
“胚胎”特性: 名称(字符串) 分析结果(文本) 创建于(日期时间) 患者的全名 病人(外键)
我现在需要向“患者”模型中添加一个方法,该方法采用JSON字符串并创建新的“胚胎”记录。 这是JSON字符串:
[
{
"name": "embryo_1",
"analysis_results": "46,XX"
},
{
"name": "embryo_2",
"analysis_results": "47,XY,+21"
},
{
"name": "embryo_3",
"analysis_results": "46,XY"
},
]
下面是我创建的模型 我不确定如何向采用JSON字符串并创建新的“胚胎”记录的“患者”模型添加方法。
class Patient(models.Model):
first_name = models.CharField(max_length=25)
last_name = models.CharField(max_length=35)
phone = models.CharField(max_length=18)
email = models.EmailField(unique=True)
created_at = models.DateTimeField(auto_now_add=True)
class Embryo(models.Model):
name = models.CharField(max_length=45)
analysis_result = models.Charfield(max_length=10)
created_at = models.DateTimeField(auto_now_add=True)
patient = models.ForeignKey(Patient, on_delete=models.CASCADE)
@property
def patient_full_name(self):
return "%s %s" % (self.patient.first_name, self.patient.last_name)
答案 0 :(得分:1)
您可以将实例方法添加到模型类中,就像其他任何python class一样。
dict
,(最好使用json.loads)。Embryo
对象的列表。示例:
import json
class Patient(models.Model):
# fields
def add_embryos(self, embryos_json_str='{}'):
embryos = json.loads(embryos_json_str)
embryo_objs = []
for embryo in embryos:
embryo_objs.append(Embryo(
name=embryo['name'],
analysis_result=embryo['analysis_results'],
patient=self
))
Embryo.objects.bulk_create(embryo_objs)
注意:
json.loads
包装在try-except
块中,以免引发任何不必要的异常。batch_size
的{{1}}参数批量插入。答案 1 :(得分:0)
可能没有必要专门采用此方法:
您可以使用python的json.loads()
加载到词典列表中,然后循环创建模型。
import json
在文件的开头,然后在您的视图中:
#get the string from your request or form or wherever you get it
dict_list = json.loads('[{...}, {...}, {...}]'
for entry in dict_list:
Embryo.objects.create(**entry)
(**entry)
语法将dict
解压缩为kwargs
希望这可以解决您的问题! :)