2011-09-20 3 views
0

하루에 비슷한 주제에 대해 두 가지 질문을하지만 미안하지만 장고와 내 noobishness는 완전히 점령했습니다. 당신은 아이디어가 누군가가 이야기를 제출하고 자신의 이름이 저자의 테이블에가는 것입니다 수장고 inlineformsets 및 일반적인 noobishness

class Story(models.Model): 
    title = models.CharField(max_length=1000) 
    text = models.CharField(max_length=5000) 
    date = models.DateField(default=datetime.date.today, editable=False) 
    likes = models.IntegerField(default='0') 
    dislikes = models.IntegerField(default='0') 
    views = models.IntegerField(default='0') 
    author = models.ForeignKey('Author', related_name="username") 

    class Author(models.Model): 
username = models.CharField(max_length=120, unique=True) 
email = models.EmailField(blank=True) 
firstname = models.CharField(max_length=500, blank=True) 
lastname = models.CharField(max_length=500, blank=True) 

: 기본적으로 나는 두 가지 모델이있다. 아주 간단한 물건. 내 문제는 사용자가 자신의 이야기와 이름을 제출할 수있는 양식을 만드는 것입니다. 나는 inlineformset을 시험해 보았고 행운이 없었다. 단지 내가 알고있는 것을 수행 할 방법을 찾을 수 없다. StoryAuthorFormSet = inlineformset_factory (저자, 스토리)

class StoryForm(ModelForm): 
     class Meta: 
      model = Story 
      exclude = ('date', 'views', 'likes', 'dislikes', 'author') 

여기가 내보기 내가했습니다 간단한 해결책은 아마 자신의 실감

def submit_story(request): 
if request.method == 'POST': 
    form = StoryForm(request.POST) 
    if form.is_valid: 
     #watch this nest part be aware of the author bit 
     author = form.save(commit=False) 
     story = StoryAuthorFormSet(request.POST, instance=author) 
     if author_formset.is_valid(): 
      story.save() 
      author_formset.save() 
      return HttpResponseRedirect('/thanks/') 
else: 
    form = StoryForm() 
    author_formset = StoryAuthorFormSet(instance=Author()) 
    return render_to_response('submit/submit_story.html', locals(), context_instance=RequestContext(request)) 

: 여기

내 폼 모델입니다 놓친 ...하지만 어떤 아이디어를 크게 크게 감상하게 될 것입니다 ..... 너무 많이 그래서 나는 그것을 필요로하는 사람을 위해 몇 가지 무료 Clojure 및 얼랭 프로그래밍을 할거야!

+0

먼저, 이전 질문에 대한 대답을 선택하십시오. –

답변

1

예제에 인라인 formset이 필요하지 않습니다. 주어진 저자를 위해 여러 기사를 한꺼번에 제출해야 할 때만 사용할 것입니다.

또한 모델에 대해 변경해야 할 사항이 있습니다.

title = models.CharField(max_length=1000) 
text = models.CharField(max_length=5000) 

적어도 텍스트 부분에는 TextField가 더 적합 할 수 있습니다.

내가 이런 식으로 해결합니다 : 는 AuthorForm을 만들고 그 모두를 사용하여 동일한보기에 StoryForm 기존.

그래서, 논리는 다음과 같습니다

author_form = AuthorForm(request.POST) 
if author_form.is_valid(): 
    author = author_form.save() 
    story_form = StoryForm(request.POST) 
    if story_form.is_valid(): 
     story = story_form.save(commit=False) 
     story.author = author 
     story.save() 

instance 매개 변수의 양식에 대한 기존의 모델을 지정 사용할 수 있습니다. 예 : 기존 데이터베이스 항목을 업데이트하려고합니다.