2012-10-07 3 views
0

소유자 모델 manytomany 필드가있는 하우스 모델에 대한 modelformset이 있으므로 소유자 필드를 제외하고 싶습니다. 소유자로 현재 로그인 한 사용자 ID - 은 숨겨진 필드로이를 해킹 할 수 있지만 제대로 완료되었는지 알 수 있습니다.Django : Model FormSet의 IntegrityError - 필요한 M2M 필드 제외

명확성을 위해

, 무결성 오류 OWNER_ID, 그냥 manage_houses

views.py

def manage_houses(request):                                                     
    HousesFormSet = modelformset_factory(House, form=ManageHousesForm)                                         

    if request.method == 'POST':                                              
     formset = HousesFormSet(request.POST)                                                

     # failed attempt at fixing integrity error                                                     
     for form in formset:                                                     
      form.owner_id = 1                                                    

     if formset.is_valid():                                                     
      if formset.save():                                                     
       notice  = "Success! Your houses were updated in the system."                                        
       notice_type = "success"                                                  
      elif not formset.has_changed():                                                 
       pass                                                       
      else:                                                        
       notice  = "Something went wrong! Your houses may not have been updated."                                     
       notice_type = "error"                                                   
    else:                                                          
     formset = SpecialsFormSet()                                                   

    response_details = { 'formset': formset,                                                 
        'fields': ManageHousesForm.base_fields }                                           

    try:                                                          
     response_details['notice']  = notice                                                
     response_details['notice_type'] = notice_type                                               
    except NameError:                                                       
     pass                                                         

    return render_to_response('houses/manage.djhtml', response_details) 

의 시작 실패를 참조하기 위해 하드 코딩하여 해결하려고 시도한 null이 될 수 없다는 것입니다 장고 Documentat에 따르면 models.py

class House(models.Model):                                                    
    class Meta:                                                        
     app_label = 'houses'                                                    

    # Fields                                                         
    owners   = models.ManyToManyField(User)                                                

    name   = models.CharField(max_length=50)                                               
    slug   = models.SlugField(max_length=100, blank=True, editable=False, unique=True)                                    
    address   = models.CharField(max_length=75)                                                 

    def __unicode__(self):                                                      
     return self.name 
+1

모델 코드를 첨부 할 수 있습니까? –

+0

Editted : 부착 됨. –

답변

2

이온, 이것은 무엇입니까 inline formsets은 :

인라인 formsets는 모델 formsets 상단에 작은 추상화 계층입니다. 외국 키를 통해 관련 개체로 작업하는 경우를 단순화합니다.

관련 문제