sim*_*son 5 python api django rest json
我从各种外部API中提取了一些JSON数据.他们的数据结构可能如下:
"game": {
"title": "Super Mario Bros. 3",
"release": "1989",
"players": 3,
..
}
Run Code Online (Sandbox Code Playgroud)
但是,我想通过这个模型将它直接存储在我的数据库中:
class Game(models.Model):
name = models.CharField()
debut = models.DateField()
max_players = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)
如您所知,JSON属性与模型的属性不匹配.
是否有一种干净的方法来映射每个属性以轻松导入此数据?是否有可能通过django的反序列化模块来做到这一点?或者我需要创建自己的东西吗?
ndp*_*dpu 10
您可以创建classmethod(或将其放在模型管理器中https://docs.djangoproject.com/en/dev/ref/models/instances/#creating-objects):
class Game(models.Model):
name = models.CharField()
debut = models.DateField()
max_players = models.IntegerField()
@classmethod
def create_from_j(cls, game): # assumed that game is dict already
j2m = {'title': 'name', 'release': 'debut', 'players': 'max_players'}
return cls(**{j2m[k]:v for k,v in game.items()})
Run Code Online (Sandbox Code Playgroud)
只需调用此方法,然后您需要从json数据创建一个游戏:
game = Game.create_from_j(json.loads(json_game))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1841 次 |
| 最近记录: |