2011-09-20 76 views
0

我正試圖解決這個問題。我有一個有多個模型的表單。基本上有人寫了一個故事,然後把他們的用戶名和這個用戶名與該故事相關聯。這是非常基本的......顯然不是django。除了搜索幾小時以找到有助於實質上多個SQL插入的東西外,它似乎是不可能的。即使我已驗證了縮進,但我得到的錯誤無法返回HTTPResponseObject。多個模型的Django表單無法返回HttpResponse

這是我的觀點:

def submit_story(request): 
    if request.method == 'POST': 
     f = request.POST.copy() 
     sdata = { 
      'author': f['username'] 
      } 
     a = AuthorForm() 
     p = StoryForm(sdata) 
     if a.is_valid(): 
      a.save() 
      if p.is_valid(): 
       p.save() 
       return HttpResponseRedirect('/thanks/') 

這裏是我的模型:

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

class Story(models.Model): 
    title = models.CharField(max_length=1000) 
    text = models.CharField(max_length=5000) 
    date = models.DateField() 
    likes = models.IntegerField() 
    dislikes = models.IntegerField() 
    views = models.IntegerField() 
    author = models.ForeignKey('Author') 

在此先感謝。我改爲從PHP的Django認爲這會更簡單,但這種多表單提交只是簡單的惱人。

回答

1

這與多個模型或插入無關。這個問題應該是顯而易見的:您擁有一套嵌套的if語句,並且在嵌套最深的位上只有一個return。如果它不是POST,或者表格a無效,或表格p無效,會發生什麼情況? Django期望在所有情況下都能返回響應,因此無論發生什麼情況,都需要返回。

+0

謝謝!我爲我強烈的白癡道歉。系統編程到網絡比我原先想象的要困難得多 – user954348

0

我同意丹尼爾的回答,你需要爲所有你的分支返回一個響應。

另一個問題是,你沒有將AuthorForm綁定到任何數據。在您的代碼中,a.is_valid()將始終爲False。

而不是

a = AuthorForm() 

你需要像

a = AuthorForm(sdata) 
相關問題