Gibt es eine Möglichkeit, beim Erstellen eines neuen Modells keine Modellinstanz für einen Fremdschlüssel übergeben zu müssen? Lassen Sie uns sagen, ich habe die folgenden Modelle:Django ForeignKey-Instanz und Raw-ID
class Foo(models.Model):
description = models.CharField(max_length=100)
class Meta:
db_table = u'foo'
class Bar(models.Model):
info = models.CharField(max_length=100)
foo = models.ForeignKey('Foo')
class Meta:
db_table = u'bar'
Je später eine Anfrage Post kommt in einer Ansicht - ich kenne die die ID eines foo Rekord und will nur einen Datensatz in der Bar-Tabelle einzufügen.
, wenn ich tun:
new_bar = Bar(info="something important", foo=foo_id)
new_bar.save()
Ich erhalte einen Valueerror sagen: „Kann nicht zuordnen "546456487466L": " Bar.foo" nur sein "Foo" Instanz
Also, ich verstehe. .. Ich möchte, dass ich eine tatsächliche Instanz des Foo-Modells habe.Ich verstehe, dass ich einfach ein Foo machen kann und es dann weitergeben kann. Aber es scheint, als müsste es einen Weg geben, diese Funktionalität außer Kraft zu setzen etwas Googeln und Lesen der Dokumente, und Raw_id_fields in Admin scheint die Grundidee zu sein. (das heißt, erlauben Sie eine rohe ID hier.) Aber sehen Sie nicht diese Option auf das ForeignKey-Feld.
Es scheint sehr ineffizient, eine Hin- und Rückfahrt in die Datenbank zu machen zu haben, um ein Objekt zu erhalten, die ID zu bekommen (was ich habe bereits). Ich verstehe, dass das Ausführen der Rundreise bestätigt, dass die ID in der Datenbank vorhanden ist. Aber, hey ... deshalb benutze ich ein RDBMS und habe in erster Linie Fremdschlüssel.
Dank
Große, klassische SO-ish-Frage. – trpt4him