我正在創建一個記錄玩家統計信息的模型。
通過首先手動輸入數據點,我可以讓Django使用將具有自然鍵的數據序列化爲json文件。 我的計劃是將此序列化格式複製到批量插入其他數據點;問題是Django不會使用loaddata
將json反序列化回數據庫。拋出的錯誤是包含另一個自然鍵的自然鍵的Django反序列化
DeserializationError: int() argument must be a string or a number, not 'list'
我已經簡化了抱怨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)
# ...
任何輸入非常感謝,謝謝!