플레이어 통계를 기록하는 모델을 생성 중입니다.
수동으로 데이터 포인트를 입력하면 Django에서 자연 키가있는 데이터를 dumpdata --natural
을 사용하여 json 파일로 직렬화 할 수 있습니다. 이 직렬화 된 형식을 복사하여 다른 데이터 요소를 대량 삽입하는 것이 계획입니다. 문제는 Django가 loaddata
을 사용하여 json을 다시 데이터베이스로 역 직렬화하지 않는다는 것입니다. 발생 오류가 나는 불평 JSON 데이터를 조금 단순화했지만 그것은 다음과 같습니다Django 다른 자연 키가 포함 된 자연 키의 비 직렬화
DeserializationError: int() argument must be a string or a number, not 'list'
입니다 :
{"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)
# ...
모든 입력 대단히 감사합니다, 감사합니다!