A chave natural do Django para fixtures dá erro de desserialização
Já vi algumas perguntas semelhantes sobre isso no SO, mas nenhuma parece responder ao meu problema específico. Eu sou novo no Django e estava me guiando pelas instruçõesesta página para me permitir usar chaves naturais para carregar acessórios. No entanto, estou recebendo erros de desserialização porque o Django quer um inteiro para uma chave estrangeira e não consigo mapear minha chave natural para uma chave primária de número inteiro, conforme observado nas instruções. Especificamente, meu código de modelos relevantes é:
class GraphTypeManager(models.Manager):
def get_by_natural_key(self, type):
return self.get(type=type)
class GraphType(models.Model):
type = models.CharField(max_length=100, unique=True)
class GraphManager(models.Manager):
def get_by_natural_key(self, name):
return self.get(name=name)
class Graph(models.Model):
name = models.CharField(max_length=200, unique=True)
type = models.ForeignKey(GraphType)
class LineManager(models.Manager):
def get_by_natural_key(self, name):
return self.get(name=name)
class Line(models.Model):
name = models.CharField(max_length=200, unique=True)
class GraphToLineManager(models.Manager):
def get_by_natural_key(self, line, graph):
return self.get(line=line,graph=graph)
class GraphToLine(models.Model):
line = models.ForeignKey(Line)
graph = models.ForeignKey(Graph)
class Meta:
unique_together = (('line', "graph"),)
E meu acessório YAML é:
- model: graphs_container.GraphType
pk: null
fields:
type: TimeSeries
- model: graphs_container.Graph
pk: null
fields:
name: LikesOverTime
type: [TimeSeries]
- model: graphs_container.Graph
pk: null
fields:
name: UsersOverTime
type: [TimeSeries]
- model: graphs_container.Line
pk: null
fields:
name: NumUsers
- model: graphs_container.Line
pk: null
fields:
name: NumLikes
Mas ao tentar correrpython manage.py loaddata sample_data.yaml
, Estou tendo o erro a seguir:
DeserializationError: [u"'['TimeSeries']' value must be an integer."]
O que estou fazendo de errado?