2015-12-13 72 views
1

我試圖保存具有自動遞增ID的模型對象,然後獲取該ID並在模板中使用它。該id不會顯示。ID不會顯示在模板上

下面是處理此提交代碼:

def process_submission(request): 
    if request.method == 'POST': 
      submission=request.POST 
      temp = Listing(title=submission['title'],pub_date=datetime.datetime.now(),email=submission['email'],price=submission['price'],body=submission['body'],subject=submission['subject'],course_number=submission['course_number']) 
      temp.save() 
      return render(request, 'listing/success.html', {'temp', temp}) 

然後success.html

<p>Submission Successful!</p> 
<p>You can find your listing at: <a href="blah/{{temp.id}}">URL/{{temp.id}}</a></p> 

的相關部分的ID將不會出現。我不太清楚爲什麼這不起作用。有什麼想法嗎?

謝謝。

編輯:

這裏是有問題的模式:

class Listing(models.Model): 
    title = models.CharField(max_length=100) 
    pub_date = models.DateTimeField('Date Published') 
    email = models.CharField(max_length=200) 
    price = models.CharField(max_length=20) 
    body = models.CharField(max_length=1500) 
    subject = models.CharField(max_length=4) 
    course_number = models.CharField(max_length=4) 

    def __str__(self): 
      return self.title 
+0

我認爲你可以在你的模板中使用'temp'作爲上下文,它將需要在'if'塊之外。如我錯了請糾正我。 – qasimalbaqali

+0

您可以將模型添加到問題中嗎? –

+0

如果請求方法是「POST」,那麼你的代碼幾乎可以工作100%。但是,除非您未顯示完整視圖方法,否則您未處理請求方法爲「GET」的情況。 GET請求的行爲是什麼? –

回答

0

您是否在模型的其他字段中設置了primary_key=True?如果這樣Django不會自動提供一個id字段。或者,也許你宣佈了自己的名爲id的字段?如果你的模型中有另一個有效的主鍵,你可以在你的模板中使用它,而不是Django的自動增加的id。

在將視圖保存在視圖中後,嘗試打印出id的值。

+0

不,我沒有設置任何其他primary_keys或有我自己的字段命名id。 –

+0

我想我可以設置另一個主鍵並以所有的方式完成所有列表,但我寧願保留當前的命名方案。 –

+0

在'temp.save()'之後打印'temp.id'的結果是什麼?是一個實際創建在你的數據庫的記錄,並創建了一個相應的有效的'ID'?您的模型中是否有其他字段可用,例如你能顯示'temp.title'嗎? – mhawke