将嵌套字典数据保存到Django mod的方法

2024-09-30 16:36:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我的字典

{
id : 123
"data":{
    "name" : "sample name"
    "description" : "sample discriptio"
    "address":{
        "address": {
            "h.no" : '420'
            "streat": 'some streat'
        }
        "city" : "Hyd"
        "State" : "S"
        "Country": "xyz"
    }
    "geoLocation":{
        "latitude": 40.0000,
        "longitude": -118.0000

    }
    "links":
    [
        {"rel": "image", "url":"http://image.com/1.jpg"},
        {"rel": "image", "url":"http://image.com/2.jpg"},
        {"rel": "some other", "url":"http://some/other/url"},
    ]

}
}

这是我的模型:

^{pr2}$

添加或更新视图逻辑:

instance = mymodel.objects.get_or_create(id=id)
for key,value in data['data'].items():

    field = mymodel._meta.get_field(key)
    if not field:
        continue
    if isinstance(field, models.ManyToManyField):
        # to handle ManyToManyField fields, like skils ['java', python]
    elif isinstance(field, models.ForeignKey) and hasattr(value, 'items'):
        # to handle ForeignKey fields
        setattr(instance, key, rel_instance)
    else:
        setattr(instance, key, value)
instance.save()

由于data['data'].items()不可能获得所有子dict键,因此在setattr(instance, key, value)中用于诸如h_no、streat、latitude、longitude等字段的值(这些值在嵌套字典中)。在

上面的字典有我想保存所有'rel':'image'我的images = models.ManyToManyField(images_model)中的链接列表

有没有最好的方法可以直接将日期保存到django模型中。 以及如何在保存数据的同时处理模型关系。在


Tags: instancekey模型imageidhttpurlfield