2010-04-01 3 views
4

업데이트 문제가 해결되어 모든 코드가 작동합니다.두 모델의 한 형식

안녕하세요!

TextPage와 Paragraph 사이에 ForeignKey 관계가 있습니다. 내 목표는 FrontPage TextPage가 ModelAdmin에 'inlines'인 것처럼 양식을 만들고 편집하는 것입니다. TextPage의 몇 가지 필드와 몇 개의 Paragraph 인스턴스 스택 인라인.

@login_required 
def textpage_add(request): 
    profile = request.user.profile_set.all()[0] 
    if not (profile.is_admin() or profile.is_editor()): 
     raise Http404 
    PageFormSet = inlineformset_factory(TextPage, Paragraph, fields=('title', 'text',), extra=5) 
    textpage = TextPage() 
    if request.POST: 
     textpageform = TextPageForm(request.POST, instance=textpage, prefix='page') 
     formset = PageFormSet(request.POST, instance=textpage, prefix='paragraphs') 
     # Saving data 
     if textpageform.is_valid(): 
      textpageform.save() 
      if formset.is_valid(): 
       formset.save() 
      return HttpResponseRedirect(reverse(consult_categories)) 
    else: 
     textpageform = TextPageForm(instance=textpage, prefix='page') 
     formset = PageFormSet(instance=textpage, prefix='paragraphs') 
    return render_to_response('textpages/manage.html', { 'formset' : formset, 
                 'textpageform' : textpageform, 
               }, context_instance=RequestContext(request)) 

내가 당신도 일을 기대하지 않는 코드를 게시하는 코드 원숭이 스타일의 종류 알고 있지만, 내가 보여주고 싶었 : 문제는 내가 확인하고 있음을 저장하는 방법에 대한 아무 생각이 없다는 것입니다 내가 성취하려고하는 것. 다음은 models.py의 관련 부분입니다.

class TextPage(models.Model): 
    title = models.CharField(max_length=100) 
    page_sub_category = models.ForeignKey(PageSubCategory, blank=True, null=True) 

    def __unicode__(self): 
     return self.title 

class Paragraph(models.Model): 
    article = models.ForeignKey(TextPage) 
    title = models.CharField(max_length=100, blank=True, null=True) 
    text = models.TextField(blank=True, null=True) 

    def __unicode__(self): 
     return self.title 

아무 도움이됩니다. 감사!

업데이트. 인스턴스 참조가 추가되었지만 여전히 작동하지 않습니다.이 문자열에 대해 ValidationError가 발생합니다.

formset = PageFormSet(request.POST, instance=textpage, prefix='paragraphs') 

아이디어가 있으십니까?

+0

,하지만 나는 좋은 대답을 생각하지 않습니다. 어떤 대답을 얻지도 않고 어떻게 든 이해하지 못한다면 대답을 게시해도 될까요? 물론 –

+0

입니다. :) – martinthenext

답변

2

인스턴스 참조가있는 업데이트 된 코드가 실제로 정상적으로 작동합니다! 템플릿에 문제가 있습니다 : ManagmentForm을 잊어 버렸습니다. 다음은 템플릿 코드는 다음과 같습니다이 예제 나 같은 초보자를하는 데 도움이

{% extends "site_base.html" %} 
{% block body %} 
<form action="" method="post"> 
{{ textpageform.as_p }} 
{{ formset.management_form }} 
{% for form in formset.forms %} 
    <p>{{ form.as_p }}</p> 
{% endfor %} 
<input type="submit" value="Go" /> 
{% endblock %} 

희망 :) 내가 도울 싶습니다

관련 문제