2011-10-24 9 views
1

我有這些模型:IndentationError同時使用表單集

class Tour(models.Model): 
    Name=models.CharField(max_length=100) 
    Count=models.SmallIntegerField() 
    PriceUnitCode=models.ForeignKey(PriceUnit) 
    Price=models.CharField(max_length=12) 
    Description=models.TextField() 
    ActionDate=models.DateTimeField(auto_now=True,editable=False) 
    ActionUserCode=models.ForeignKey(User,editable=False) 
    StatusTypeCode=models.ForeignKey(StatusType) 

class Images(models.Model): 
    Image = models.ImageField(upload_to="gallery") 
    Tour=models.ForeignKey(Tour) 

我想設計一個表單添加參觀,併爲巡迴賽在同一形式的一組圖像。 這是我FormModel:

def myview(request,key): 
    GalleryFormSet = inlineformset_factory(Tour,Images) 
    if request.method == 'POST':   
     form = TourForm(request.POST, request.FILES) 
     if form.is_valid(): 
      tour=form.save() 
      formset=GalleryFormSet(request.POST, request.FILES,instance=tour) 
      if formset.is_valid(): 
       formset.save() 
    else: 
     form = TourForm() 
     formset=GalleryFormSet() 
    return render_to_response('airAgency/addtour.html', {'form': form,'formset':formset}) 
在我的模板

class TourForm(ModelForm): 
    class Meta: 
     model = Tour 

我views.py做到這一點

<form method='POST' enctype="multipart/form-data" dir="rtl"> 
    {% csrf_token %} 
    {{ form.as_p }} 
    {{ formset.management_form }} 
    {% for form in formset %} 
     {{ form }} 
    {% endfor %} 
    <input type="submit" /> 
</form> 

但它有這個錯誤:

unexpected indent (views.py, line 122) 

行122是這樣的:

if(form.is_valid()): 

當然我改變了這段代碼很多,但每當它有122行錯誤,而122行中的代碼每次都在改變! 它有什麼問題? 由於事先

+0

哦,我的godddd !!我很困惑。修正indentiations後,我在view.py這行中有indentiation錯誤:if form。is_valid():當我刪除這一行來嘗試,這行有indentaion錯誤:tour = form.save() –

回答

3

很可能,你的壓痕的區別線122,最有可能是因爲你有看不見的差異領先的空白。

例如:塊中有許多行,全部以選項卡開始,由編輯器顯示爲... 8個空格。其中一行(第122行)包含一個空格和一個製表符作爲引導空格,由編輯器顯示爲... 8個空格。你沒有看到它們的區別,但Python的行開始是不同的,這就是問題所在。

建議:刪除第122行的所有前導空格,然後使用編輯器自動縮進以獲得一致的結果。或者從第122行刪除所有前導空白,並使用與該塊其餘部分相同的開始。

要驗證是這種情況,請使用ViM打開文件,然後鍵入:set list(所有字符)。現在TAB將顯示爲^I,而空格將顯示爲單個空格字符。

+1

同意這個答案,但我覺得有必要強調第121行應該檢查以確定預期的縮進。 – jro

+0

所以,我的代碼是正確的? –

+0

可能是的,修復縮進問題後,您的代碼可能會工作 - 或不。我不是Django的專家,我把這個問題看作是一個低級別的Python問題。 – hochl

3

也許你把空格而不是選項卡在該行(或oposite),可以出現在我有時

+0

我總是使用3個空格的每個定義,它總是適合我!現在我已經更正了indentations錯誤是這個行在views.py中:formset = GalleryFormSet(request.POST,request.FILES,instance = tour) –

1
在python線122

是:

if form.is_valid(): 
+0

in views.py line 22 –

1

最常見的錯誤的像這樣的源是在前面的方法縮進改變,或一般向上從其中報告的實際誤差幾行。 最主要的問題這個問題的常見來源是從網上覆制粘貼東西,這些東西要麼是選項卡/間隔要麼比您要做的更多/更少。

你的編輯應該警告你這類東西。例如,Komodo IDE提供箭頭來指示縮進級別。所以把它加載到一個奇特的編輯器中,並用它來發現問題。有關於python IDE的SO帖子。

+0

U're right,I use notepad ++ 。這是我的經紀人。科莫多很好? –

+0

科莫多隻是第一個突然出現在我腦海中的這個功能。你應該在SO上檢查python IDE的問題。 – Gleno

相關問題