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