2012-04-15 6 views

답변

0

짧은 대답은 '예'입니다. 템플릿과 뷰에주의해야합니다.

코드,보기, 장고 모델 및 템플릿을 공유 할 수 있습니까? 모델 양식을 사용하고 있습니까? 왜 그것들을 별도의 모델 (테이블)로 유지하고 있습니까?

제 생각에는 모델을 별도로 유지할 필요가없는 경우 그림을 포함하도록 제품 모델을 편집하십시오. 그러면 귀하의 양식이 귀하의 필요에 잘 맞을 것입니다.

희망이 도움이됩니다. 그렇지 않은 경우 코드를 공유하십시오.

+0

감사를 당신의 대답. 먼저 제품 테이블에 그림을 그렸지만 한 제품에 둘 이상의 그림이 필요할 것이라는 것을 깨달았습니다. 그림을위한 특별한 테이블을 만들었습니다. Alasdair의 코드가 그 일을 해냈습니다. – fiddis

3

동일한 <form> 태그에 prefix 인수를 사용하여 여러 양식을 포함 할 수 있습니다.

그림 모델 양식에서 제품 필드를 제외하십시오. 보기에서 두 양식이 모두 유효한지 확인하십시오. 두 양식이 모두 유효하면 두 양식을 모두 저장하고 그림 양식에 commit=False을 사용하여 수동으로 제품을 설정할 수 있습니다.

모두 함께, 양식 및보기는 다음과 같이 보일 것을 퍼팅 :

class ProductForm(forms.ModelForm): 
    class Meta: 
     model = Product 

class PictureForm(forms.ModelForm): 
    class Meta: 
     model = Picture 
     exclude = ('product',) 

def my_view(request): 
    if request.method == "POST": 
     product_form = ProductForm(prefix="product", data=request.POST) 
     picture_form = PictureForm(prefix="picture", data=request.POST, files=request.FILES) 
     if product_form.is_valid() and picture_form.is_valid(): 
      product = product_form.save() 
      picture = picture_form.save(commit=False) 
      picture.product=product 
      picture.save() 
      return HttpResponseRedirect("/success_url/") 
    else: 
     product_form = ProductForm(prefix="product") 
     picture_form = PictureForm(prefix="picture") 
    return render(request, "my_template.html", {'product_form':product_form, 
            'picture_form': picture_form, 
            }) 

귀하의 템플릿은 다음과 같이 보일 것이다 :

<form> 
    <table> 
    <tbody> 
     {{ product_form }} 
     {{ picture_form }} 
    </tbody> 
    </table> 
    <p><input type="submit" value="Submit" /></p> 
</form> 
+0

nitpick :'render()'의 첫번째 매개 변수는'request'입니다. – okm

+0

@okm 예입니다. 이제 해결되었습니다. – Alasdair

+0

고마워, 그게 내가 필요한거야! :) – fiddis

관련 문제