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