Django Natural Key for Fixtures geben Deserialisierungsfehler
Ich habe ein paar ähnliche Fragen zu SO gesehen, aber keine scheint mein spezielles Problem zu beantworten. Ich bin neu in Django und habe mich anhand der Anweisungen unter geführtdiese Seite um mir zu erlauben, natürliche Schlüssel zum Laden von Fixtures zu verwenden. Trotzdem erhalte ich Deserialisierungsfehler, weil Django eine Ganzzahl für einen Fremdschlüssel haben möchte und meinen natürlichen Schlüssel nicht einem ganzzahligen Primärschlüssel zuordnen kann, wie in den Anweisungen angegeben. Insbesondere ist mein relevanter Modellcode:
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"),)
Und mein YAML Fixture ist:
- 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
Aber beim Versuch zu rennenpython manage.py loaddata sample_data.yaml
Ich erhalte den folgenden Fehler:
DeserializationError: [u"'['TimeSeries']' value must be an integer."]
Was mache ich falsch?