Есть ли способ не проходить в экземпляре модели для внешнего ключа при создании новой модели? Скажем, у меня есть следующие модели: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'
Позднее запрос пост приходит к виду - я знаю, что идентификатор в Foo записи и просто хочу, чтобы вставить запись в таблицу бара.
если я:
new_bar = Bar(info="something important", foo=foo_id)
new_bar.save()
Я получаю поговорку «Невозможно присвоить "546456487466L ValueError": " Bar.foo" просто быть "экземпляр Foo"
Итак, я понимаю. .. он хочет, чтобы у меня был фактический экземпляр модели Foo.Я понимаю, что я могу просто получить Foo, а затем передать его. Но, похоже, должен быть способ переопределить эту функциональность. некоторые googling и чтение документов, а raw_id_fields в admin, по-видимому, является основной идеей (то есть, разрешить исходный идентификатор здесь). Но не вижу эту опцию в поле ForeignKey.
Кажется очень неэффективным, чтобы совершить кругосветное путешествие в базу данных, чтобы получить объект, чтобы получить идентификатор (который у меня уже есть). Я понимаю, что выполнение поездки в оба конца подтверждает, что идентификатор существует в базе данных. Но, эй ... вот почему я использую РСУБД и имею внешние ключи.
Благодаря
Отличный, классический вопрос SO-ish. – trpt4him