2011-04-10 1 views
17

폼에서 많은 필드를 저장하는 데 문제가 있습니다. 여기 내 모델은 다음과 같습니다Django의 modelform을 통해 Many To Many 데이터를 저장하십시오.

def process_npiform(request, npi_id=None): 

    if npi_id: 

     try: 
      npi = Data.objects.get(id=int(npi_id)) 
     except: 

      raise Http404 

    if request.method == 'POST': 
     data = DataForm(request.POST, instance=npi, prefix='npi_data') 

     if data.is_valid(): 
      update = data.save(commit=False) 

      if not request.user.is_superuser: 
       update.User = request.user 

      update.save() 

      if update.Status == 'past-due': 

       try: 
        prefab = PHIssue.objects.get(Data=npi) 

       except: 
        prefab = PHIssue(Data=Data.objects.get(id=int(update.id))) 
        prefab.save() 

       issue = PHIssueForm(request.POST, instance=prefab, prefix='npi_issue') 

       if issue.is_valid(): 

        save_issue = issue.save(commit=False) 

        save_issue.save() 




      return HttpResponseRedirect(reverse('pm')) 

     else: 
      return render_to_response('npi/data.html', {'data': data, 'issue': issue}, context_instance=RequestContext(request))  
    else: 
     return HttpResponseRedirect(reverse('pm')) 

나는 양식을 저장할 때마다, 단지 메모 텍스트 필드를 PHIssue 인스턴스에 저장됩니다 : 여기

class TextIssue(models.Model): 
    Issue = models.CharField(max_length=150, unique=True) 

    def __unicode__(self): 
     return self.Issue 

class PadIssue(models.Model): 
    Issue = models.CharField(max_length=150, unique=True) 

    def __unicode__(self): 
     return self.Issue 


class PHIssue(models.Model): 
    Data = models.ForeignKey(Data) 
    TextIssue = models.ManyToManyField(TextIssue, blank=True, null=True) 
    PadIssue = models.ManyToManyField(PadIssue, blank=True, null=True) 
    Notes = models.TextField() 

    def clean(self): 
     from django.core.exceptions import ValidationError 
     if self.TextIssue is None and self.PadIssue is None: 
      raise ValidationError('You must choose at least one issue category.') 

     if self.Notes is None: 
      raise ValidationError('You must write a note regarding the issues selected above.') 


class PHIssueForm(ModelForm): 

    class Meta: 
     model = PHIssue 
     exclude = ('Data',) 

그리고 내 views.py에서 포스트 요청을 처리 , 그리고 많은 분야에서 많은 분야는 공백으로 남아있다. 누군가 내가 잘못된 것을 찾도록 도와 줄 수 있습니까?

답변

9

을 사용하여 수행하지 않는 첫 번째 저장하는 상위 개체를 필요로 전화를해야 예 :

if todo_list_form.is_valid(): 
       todo_list = todo_list_form.save(commit=False) 
       todo_list.save() 
       todo_list_form.save_m2m()