C'è un modo per non dover passare in un'istanza di modello per una chiave esterna quando si crea un nuovo modello? Diciamo che ho i seguenti modelli:Django ForeignKey Instance vs 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'
Più tardi una richiesta POST viene a vista - So che il l'ID di un record di foo e voglio solo inserire un record nella tabella bar.
se faccio:
new_bar = Bar(info="something important", foo=foo_id)
new_bar.save()
ottengo un ValueError che dice "Impossibile assegnare "546456487466L": " Bar.foo" solo una "istanza Foo"
Così, ho capito. .. mi vuole una vera istanza del modello Foo. Capisco che posso solo fare un salto su Foo e poi passarlo. Ma sembra che ci debba essere un modo per scavalcare questa funzionalità. alcuni googling e la lettura dei documenti, e raw_id_fields in admin sembra essere l'idea di base. (Vale a dire, consentire un ID raw qui)., Ma non vedere questa opzione nel campo ForeignKey.
Sembra molto inefficiente dover effettuare un round trip nel database per ottenere un oggetto per ottenere l'id (che ho già). Capisco che facendo il viaggio di andata convalida che l'ID esiste nel database. Ma, hey ... ecco perché sto usando un RDBMS e ho le chiavi esterne in primo luogo.
Grazie
Grande, classica domanda SO-ish. – trpt4him