2013-03-13 150 views
13

我有一些模型與大量的內聯。由於並非所有對象都需要用extra = 0聲明內聯模型,因此內聯中會出現一個小的add +django 1.5管理內嵌額外

但是,這似乎不再適用於django 1.5。如果設置了extra = 0,則內聯不再可編輯。

有沒有辦法讓1.4行爲變爲1.5?

例如代碼:

class ModelInline(admin.StackedInline): 
    model = MyModel 
    extra = 0 

class OtherModelAdmin(admin.ModelAdmin) 
    inlines = [ModelInline] 

admin.site.register(OtherModel, OtherModelAdmin) 

編輯(一些屏幕):

Django的1.4: django 1.4 extra=0

Django的1.5: enter image description here

(Hinzufügen==添加)

+0

示例代碼在這裏很好看。 – 2013-03-13 12:31:08

+0

k,增加了一些示例代碼 – Jannis 2013-03-13 12:44:07

回答

7

這已經發生過。

The new javascript made this impossible because the "Add Another" button 
was controlled by max_num, and ignored a value of 0. 
The javascript ignored a value of 0 because max_num has a default value of 0, 
and all the code using it had taken to equating max_num = 0 with being "off". 
So you can't actually have a maximum of 0. It's not possible. 

有一個由Gabrial Hurley創建的補丁可以恢復所需的行爲而不會破壞其他任何東西。這是3年前,我不知道它是否仍然爲Django 1.5工作。剛剛嘗試:)

https://code.djangoproject.com/attachment/ticket/13023/13023_inlines_patch.diff

這裏是相同的錯誤門票(3年前):

https://code.djangoproject.com/ticket/13023

+0

我似乎無法在1.6中應用這個,因爲total_form_count不再在models.py中定義,只在formsets.py中,而且代碼是不同的,所以我不確定要更改什麼。誰能幫忙? – smwilsonau 2014-10-10 22:39:22

+0

@smwilsonau在Django 1.6中,它被稱爲'initial_form_count' – catherine 2014-10-11 10:49:56

+0

謝謝,我找到了相應的行並應用了這個補丁,但是我的問題變成了不同的東西...... – smwilsonau 2014-10-11 18:09:03

2

我遇到同樣的問題,因爲我曾在靜態管理內容一個在django的安裝之外的目錄。將Django 1.5靜態內容從django/contrib/admin/static/admin/js /複製到STATIC_ROOT/admin/js解決了問題。

+1

這實際上並不是一件好事。當你在某些時候升級django版本時,你會遇到麻煩,因爲你不會看到這些靜態文件的新版本(只是有這樣的問題)。如果你以正確的方式服務靜態內容(https://docs.djangoproject.com/en/dev/howto/static-files/),你應該沒有問題 – nivcaner 2014-05-07 13:21:28

0

更好的解決方案是覆蓋內聯本身的get_extra方法。這在Django 1.9中有效,但我不能說早期版本