2016-09-29 18 views
0

我下面舉個例子:Django的選擇在Django管理:在內嵌形式新的項目不起作用

models.py

class Book (models.Model): 
    title = models.CharField(u'Book Title', max_length=300) 

class AthoursBook(models.Model): 
    chapter = models.IntegerField(max_length=2) 
    booksathours = models.ManyToManyField(Book, through=u'Athour', verbose_name=u'Athours on book') 

class Athour(models.Model): 
    name = models.CharField(u'Athour Name', max_length=300) 
    book = models.ForeignKey(Book) 

admin.py

class AthourAdmin(admin.ModelAdmin): 
    inlines = [BookInline] 
    extra = 0 

class BookInlineForm(ModelForm): 
    class Meta: 
     model = Book 
     widgets = { 
       'book': Select(attrs={'class': 'chozen-css'}), 
      } 

class BookInline(admin.TabularInline): 
    model = Book 
    form = BookInlineForm 
    extra = 0 

我想使用Django的Django的選擇管理 ,但它不工作添加新的按鈕(在內聯表格)如圖所示...任何想法?謝謝! 我也試過自己選擇沒有運氣...

我的意思是這可能嗎? - 內聯遵循我的manytomany模型,這是由於許多其他原因以這種方式實現... Django版本1.5。

django-admin screenshot

回答

0

這不符合Django的選擇的問題。

問題是,新行默認爲隱藏併爲空。點擊添加鏈接時,顯示並填充此行,因此首先需要恢復空選擇的.chosen(),然後在填充選擇後應用.chosen方法()。

我解決了這個問題,在change_form.html模板添加下面的JavaScript

<script type="text/javascript"> 
jQuery(document).ready(function ($){ 
    $("#book_set-group select").chosen(); 
    // reverting chosen on the SELECT of the empty row 
    $("#id_book_set-__prefix__-athour").chosen('destroy'); 

    $('#book_set-group .add-row').click(function(e){ 
     $("#book_set-group select").chosen(); 
     // reverting chosen on the SELECT of the empty row 
     $("#id_book_set-__prefix__-athour").chosen('destroy'); 
    }) 
}); 
</script> 
+0

感謝您的答覆。它只適用於一個新的行,我假設是因爲之後非常選擇轉換爲選擇 - 選擇事件不能創建一個正確的新的選擇行... –