당신이 forms.ModelChoiceField
를 사용하고 그것을 검색어 세트를 전달할 수있는 형태로 외래 키 필드를 표시에 관해서. 그래서
, forms.py :
class DocumentForm(forms.ModelForm):
class Meta:
model = Document
def __init__(self, *args, **kwargs):
user = kwargs.pop('user','')
super(DocumentForm, self).__init__(*args, **kwargs)
self.fields['user_defined_code']=forms.ModelChoiceField(queryset=UserDefinedCode.objects.filter(owner=user))
views.py : 귀하의 질문에서
def someview(request):
if request.method=='post':
form=DocumentForm(request.POST, user=request.user)
if form.is_valid():
selected_user_defined_code = form.cleaned_data.get('user_defined_code')
#do stuff here
else:
form=DocumentForm(user=request.user)
context = { 'form':form, }
return render_to_response('sometemplate.html', context,
context_instance=RequestContext(request))
: 난 당신이 사용할 수있는보기 알고
document.code_set (예를 들어) 은 현재 문서 개체 인 에 대한 관련 개체에 액세스하지만 이 모델을 ModelForm에 적용하는 방법을 모르십니까?
실제로 Document
개체는 FK 관계가 문서 모델에 정의되어 있기 때문에 이 아닙니다. Code
에 대한 many to one 관계를 정의하고 있습니다. 즉 Code
객체 당 많은 Document
개의 객체가있을 수 있습니다. Code
개체의 문자 수는 .document_set
입니다. 문서 개체에서 할 수있는 것은 Code
document.code
을 사용하는 것과 관련된 액세스입니다.
편집 : 나는 이것이 당신이 찾고있는 것을 할 것이라고 생각합니다. (테스트되지 않은)
forms.py :
class DocumentForm(forms.ModelForm):
class Meta:
model = Document
exclude = ('code',)
def __init__(self, *args, **kwargs):
user = kwargs.pop('user','')
super(DocumentForm, self).__init__(*args, **kwargs)
self.fields['user_defined_code']=forms.ModelChoiceField(queryset=UserDefinedCode.objects.filter(owner=user))
self.fields['unique_code']=forms.CharField(max_length=15)
views.py :
def someview(request):
if request.method=='post':
form=DocumentForm(request.POST, user=request.user)
if form.is_valid():
uniquecode = form.cleaned_data.get('unique_code')
user_defined_code = form.cleaned_data.get('user_defined_code')
doc_code = Code(user_defined_code=user_defined_code, code=uniquecode)
doc_code.save()
doc = form.save(commit=False)
doc.code = doc_code
doc.save()
return HttpResponse('success')
else:
form=DocumentForm(user=request.user)
context = { 'form':form, }
return render_to_response('sometemplate.html', context,
context_instance=RequestContext(request))
실제로 당신은 아마 대신의 코드 개체를 만들 때 get_or_create를 사용하고 싶습니다.
doc_code = Code(user_defined_code=user_defined_code, code=uniquecode)
도움 주셔서 감사합니다.ModelChoiceField에 대한 문서를 읽었으며 이제는 의미가 있습니다. 'unique_code' 필드에 대해 CharField (내 질문에 세 번째 글 머리 기호)를 어떻게 표시하는지 알고 있습니까? 필자는 모델을 약간 씩 훑어 읽기 쉽게 만들었지 만 기본적으로 컴퓨터에서 생성 된 고유 한 문서 코드가 할당 된 문서를 가지고 있습니다. 각 사용자는 자신이 소유 한 모든 문서의 접두어로 접두사로 첨부 된 별도의 사용자 코드를 만들 수 있습니다. 따라서 여러 모델에 대한 이유가 있습니다. –
@Ben S 알았습니다. 내 게시물을 수정하겠습니다. – DTing
이것은 훌륭했습니다. 당신의 도움을 주셔서 감사합니다. –