2016-09-29 9 views
0

を動作しません:私はしたいジャンゴ - 選択したDjangoのadminに:インラインフォームで新しいアイテムが、私は次の例を持っている

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-adminで選択されたdjangoを使用することはできますが、画像に示されているようにインラインフォームに新しいボタンを追加しても機能しません。ありがとう! 私は運が無くても自分で選んでみました...

これは可能ですか? - インラインは、他の多くの理由でこの方法で実装されている私のmanytomanyモデルに従います... Djangoバージョン1.5。

django-admin screenshot

答えて

0

これはジャンゴ - 選択の問題ではありません。

問題は、デフォルトでは新しい行が非表示になり、空であることです。追加リンクをクリックすると、この行が表示され、塗りつぶされます。

まず、空の選択の.chosen()を元に戻し、選択が満たされた後に.chosenメソッド()を適用する必要があります。

私はchange_form.htmlテンプレートで返信用

<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

感謝を次のJavaScriptを追加し、問題を解決しました。それは1つの新しい行のためだけに動作し、それは非常に選択chozenに変換されるため、イベントは正しい新しい選択行を作成することはできません選択していると仮定しています... –

関連する問題