0

プレーヤーの統計を記録するモデルを作成しています。
最初に手動でデータポイントを入力することで、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)
    # ...

どんな入力でも大歓迎です、ありがとう!

4

1 に答える 1