저는 40,000 개의 행으로 이루어진 모델의 ForeignKey 값인 하나의 필드를 가진 modelform을가집니다. 기본 modelform은 40,000 개 옵션을 가진 선택 상자를 만들려고하는데, 가장 이상적이지는 않습니다. 이 modelform이 formset 팩토리에서 사용될 때 더욱 그렇습니다!raw_id_fields for modelform
관리자의 경우 "raw_id_fields
"을 사용하면 쉽게 피할 수 있지만 동일한 모델 양식은없는 것 같습니다. 어떻게해야합니까?
class OpBaseForm(ModelForm):
base = forms.CharField()
class Meta:
model = OpBase
exclude = ['operation', 'routes']
extra = 0
raw_id_fields = ('base',) #does nothing
첫 번째 굵은 선이 거대한 다루기 힘든 선택 박스를 생성하지 않음으로써 작동하지만이 양식의 필드 셋을 저장하려고하면 다음과 같은 에러가 발생합니다 : "OpBase
여기 내 modelform입니다. base "는"Base "인스턴스 여야합니다. modelform을 저장하려면 'base'가 Base 인스턴스 여야합니다. 분명히 기본 기본 키의 문자열 표현으로는 충분하지 않습니다 (적어도 자동으로는 안됨). 내 양식에 주어진 문자열을 Base 인스턴스로 변경하는 메커니즘이 필요합니다. 그리고이 메커니즘은 formset에서 작동해야합니다. 어떤 아이디어? raw_id_fields
만 작동하면 케이크처럼 쉬울 것입니다. 하지만 내가 말할 수있는 한, 그것은 관리자 만이 사용할 수 있습니다.
명확히하기 위해 raw_id_field 속성은 ModelAdmin 속성입니다. http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.raw_id_fields ModelForm 속성이 아닙니다. –