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 и просто хочу вставить запись в таблицу 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, чтобы получить идентификатор (который у меня уже есть). Я понимаю, что выполнение кругового пути подтверждает, что идентификатор существует в базе данных. Но, эй... именно поэтому я использую СУБД и в первую очередь имею внешние ключи.

Спасибо

14
задан David S 16 May 2012 в 16:29
поделиться