2013-04-23 2 views
1

아무도 도와 드릴 수 있습니까? 이 코드의 문제점은 하나의 양식 만 저장되므로 양식이지만 bform은 저장되지 않기 때문입니다. 나는 어디로 잘못 갔습니까 ?? forms.pydjango : 두 개의 양식이 있지만 하나의 양식 만 저장 중입니다.

class customerForm(ModelForm): 
    F_NAME = forms.CharField(widget=forms.TextInput(attrs={'size':'34'})) 
    L_NAME = forms.CharField(widget=forms.TextInput(attrs={'size':'34'})) 
    EMAIL = forms.CharField(widget=forms.TextInput(attrs={'size':'19'})) 
    ADD = forms.CharField(widget=forms.TextInput(attrs={'size':'34'})) 
    class Meta: 
     model = customer 

class buildingForm(ModelForm): 
    CUSTOMER  = forms.CharField(widget=forms.TextInput(attrs={'size':'20'})) 
    B_FLOORSPACE = forms.CharField(widget=forms.TextInput(attrs={'size':'4'})) 
    B_YEAR  = forms.CharField(widget=forms.TextInput(attrs={'size':'4'})) 
    class Meta: 
     model = building 
     widgets = {'B_USE'  : RadioSelectNotNull(), 
        'B_TYPE'  : RadioSelectNotNull(), 
        } 

views.py

def customerView(request, **kwargs): 
    this_customer = customer.objects.get(id=kwargs['pk']) 
    if request.method == 'POST': 
     form = customerForm(request.POST, instance=this_customer) 
     bform = buildingForm(request.POST) 
     if form.is_valid() and bform.is_valid(): 
      form.save() 
      bform.save() 
    else: 
     form = customerForm(instance=this_customer) 
     bform = buildingForm() 
    return render_to_response('customer.html',{'form':form, 'bform':bform,}, 
           context_instance = RequestContext(request)) 

편집은 템플릿 customer.html을 추가 할 수있는 실수가 말하는 오류가 없습니다

<form action="" method="post"> 
<button type="submit" name="customer">Save</button> 
    {% csrf_token %} 
    {{ form.id }} 

...more code... 
<table> 
    <tr><td><div>First Name</div>{{ form.F_NAME }}</td></tr>  
    <tr><td><div>Last Name</div>{{ form.L_NAME }}</td></tr> 
</table> 

    ...more code.... 
<table> 
    <tr><td><div>Build Use</div></td><td>{{ bform.B_USE }}</td> 
     <td><div>Build Space</div></td><td>{{ bform.B_FLOORSPACE }}</td> 
     </tr> 

...more code... 
</form> 

코딩. 도움 주셔서 감사합니다.

+0

당신이 양식을 렌더링하는 템플릿의 일부를 게시 할 수 있습니까? –

+0

'buildingForm'의'Meta' 클래스에'fields' 라인을 추가하고, 필드 생성자 대신에 use/type을 따라 widgets 옵션에 customer/floorspace/year 위젯을 지정해 보았습니까? – Mariano

+0

두 양식의 경우 [접두어] (https://docs.djangoproject.com/en/dev/ref/forms/api/#django.forms.Form.prefix)를 사용자에게 제공해야 할 수도 있습니다. 빈 양식을 렌더링하는 동안 및 POST 데이터에서 바운드 양식을 작성하는 동안 둘 다 추가해야합니다. – akotian

답변

-1

두 개의 양식을 템플릿의 개별 양식 요소로 표시한다고 가정합니다. 이 방법의 문제점은 실제로 한 번에 하나의 양식 만 제출할 수 있다는 것입니다. 다행히 Django는이 문제에 대한 해결책으로 Formsets를 제공합니다.

적절한 문서 : https://docs.djangoproject.com/en/dev/topics/forms/formsets/

+2

formset에 대한 필요가 없으며 두 장고 양식을 하나의 HTML

요소로 감쌀 수있다. –

+0

네 말이 맞아, 나는 이것에 끌기에 약간 빠르다. Formsets는 올바른 해결책이 아닙니다. –

+0

안녕하세요. @DanielRoseman 및 j.koch 내 양식은 하나의 html 형식으로 포장되지만 왜 아직도 저장하지 않습니다. 거기에 잘못 코딩에 views.py???it 내게 어떤 오류를주지 않았어 ... – noobes

관련 문제