プレーヤーの統計を記録するモデルを作成しています。
最初に手動でデータポイントを入力することで、Djangoに自然キーを使用してデータをjsonファイルにシリアル化させることができますdumpdata --natural
。私の計画は、このシリアル化された形式をコピーして、他のデータポイントを一括挿入することです。問題は、Djangoがを使用してjsonをデータベースに逆シリアル化しないことloaddata
です。スローされるエラーは
DeserializationError:int()引数は、「リスト」ではなく、文字列または数値である必要があります
不平を言うjsonデータを少し簡略化しましたが、次のようになります。
{"pk": 1, "model": "nba.metric", "fields": {"player": ["Kobe Bryant", ["Lakers", 2012]]}}
私のモデルはそのようなものです:
class TeamManager(models.Manager):
def get_by_natural_key(self, name, season):
return self.get(name=name, season=season)
class Team(models.Model):
name = models.CharField(max_length=20)
season = models.IntegerField()
class Meta:
unique_together = ('name', 'season')
objects = TeamManager()
def natural_key(self):
return (self.name, self.season)
class PlayerManager(models.Manager):
def get_by_natural_key(self, name, team):
return self.get(name=name, team=team)
class Player(models.Model):
name = models.CharField(max_length=100)
team = models.ForeignKey(Team)
class Meta:
unique_together = ('name', 'team')
objects = PlayerManager()
def natural_key(self):
return (self.name, self.team.natural_key())
class Metric(models.Model):
player = models.ForeignKey(Player)
# ...
どんな入力でも大歓迎です、ありがとう!