2011-05-17 27 views
3

我試圖創建一個Django應用程序,用戶可以在其中創建電影列表。每次用戶登錄時,他們的電影列表都會顯示在表格中。該表有三列:一個用於電影名稱,一個用於流派,另一個包含刪除按鈕,允許用戶刪除與該按鈕對應的行。用戶可以通過填寫電影名稱的文本框,然後從下拉菜單中選擇一種流派,然後按下「添加」按鈕,將行添加到表格中。 「添加」和「刪除」按鈕是用戶編輯表格的唯一方式。使用Django創建可編輯的HTML表格

有沒有Django創建這樣的可編輯表的捷徑?我認爲這可能適合formset,但我無法弄清楚如何去做。此外,谷歌「Django表」的結果似乎與數據庫表有關。

這是我目前正在使用該模型:

class MovieList(models.Model): 
    user = models.ForeignKey(User) 
    movie = models.ForeignKey(Movie) 

class Movie(models.Model): 
    genre = models.ForeignKey(Genre) 
    name = models.CharField(max_length=300) 

class Genre(models.Model): 
    name = models.CharField(max_length=200) 

任何幫助將是非常讚賞。

回答

0

有幾種方法可以解決這個問題。雖然它並沒有真正使用快捷方式,但我無法看到由標準視圖渲染表格的問題,並附上了一個用於輸入新條目的表單。

如果你正在尋找一個快捷方式和一些額外的便利django-tables可能適合你。

當然,您可以使用jQuery使流程更具動態性,以便人們可以在不重新加載整個頁面的情況下添加和刪除項目:類似於管理中的Django的dynamic inlines。如果你決定採用這種方式,你應該仔細看看django-dynamic-formsets或jQuery的幾個網格插件之一。 jqGrid來命名一個。

+0

謝謝arie。我確實一直在嘗試使用jQuery,以便用戶可以多次添加和刪除,並且一旦用戶準備好保存更改,數據就只會與服務器同步。我沒有意識到django-dynamic-formsets。我不得不進一步看,但這可能是我需要的類型。 – 2011-05-18 00:46:00

+0

從我的理解中,我能否正確地理解這種情況下沒有django捷徑?我只需要用普通的舊形式使用普通的舊視圖?或者更適合的formset? (我對於什麼是formset還不是很清楚,我嘗試使用一個,並將其作爲表格來呈現它的樣子,但這不是我所期望的,所以我想也許我沒有正確實施它,或者那些表單只是不適合我所做的)想法? – 2011-05-18 00:51:42

+0

嗯......「一個formset是一個抽象層,可以在同一頁面上處理多個表單」。所以,如果你想將表格中的每個單獨的條目渲染爲表單(並且附加一個刪除按鈕),formset就是要走的路。一個更清潔的替代方法是將整個表格呈現爲一個表格,並使用複選框(如Django的管理員更改列表)勾選要在一篇文章中刪除的條目。例如,請參閱此討論以瞭解其優點和缺點:http://www.mail-archive.com/[email protected]/msg53075.html – arie 2011-05-18 08:19:22