새 모델을 만들 때 외래 키에 대한 모델 인스턴스를 전달할 필요가없는 방법이 있습니까? 이 전 다음과 같은 모델을 가지고 있다고 가정 해 봅시다 :Django ForeignKey 인스턴스 대 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'
후자 POST 요청은보기에 온다 - 나는 foo는 레코드의 ID를 알고 바로 바 테이블에 레코드를 삽입 할.
내가 할 경우 : ":"
new_bar = Bar(info="something important", foo=foo_id)
new_bar.save()
은 내가 ValueError를 말하는 546456487466L "를 할당 할 수 없습니다"얻을. Bar.foo는 "단지 수는"푸 "인스턴스를
을 그래서, 나는 그것을 얻을. .. 나는 Foo 모델의 실제 인스턴스를 갖기를 원한다. 나는 Foo에 접근하여 전달할 수 있다는 것을 이해한다. 그러나이 기능을 오버라이드 할 수있는 방법이 있어야 할 것 같다. 일부 인터넷 검색 및 문서를 읽고 raw_id_fields in admin이 기본 아이디어 인 것 같습니다. (즉, 여기에 원시 ID를 허용합니다.) 그러나 ForeignKey 필드에는이 옵션이 표시되지 않습니다.
개체를 가져 와서 이미 가지고있는 ID를 얻으려면 데이터베이스를 왕복해야하는 것은 매우 비효율적 인 것처럼 보입니다. 왕복 여행을하다 보면 ID가 데이터베이스에 있는지 확인합니다. 하지만, 어이 ... 그 이유는 내가 RDBMS를 사용하고 첫 번째 장소에서 외래 키가 있습니다.
감사
멋진 고전적인 질문입니다. – trpt4him