2017-10-25 9 views
0

インラインフィールドに属性を追加しようとすると、何も追加されません。私はそれぞれの選択のために同じクラスを選択して、選択した変更に対してjavascriptイベントを追加します。インラインフィールドに属性を追加する方法Django?

これは私のmodels.pyです:

class Conversation(models.Model): 
    conversation_name = models.CharField(verbose_name="Nom du conversation", 
max_length=255) 
    group = models.ForeignKey(Group, verbose_name="Groupe") 

class ConversationMessage(models.Model): 
    conversation_title = models.ForeignKey(Conversation, 
         verbose_name="Conversation") 
    from_message = models.ForeignKey(MessageList, verbose_name="De", 
        related_name="from_message") 
    to_message = models.ForeignKey(MessageList, verbose_name="A", 
       related_name="to_message") 

私のadmin.py:

class ConversationMessageInline(admin.TabularInline): 
    model = ConversationMessage` 

class ConversationMessageAdmin(admin.ModelAdmin): 
    form = ConversationMessageForm 
    list_display = ['conversation_title', 'from_message', 'to_message'] 

class ConversationAdmin(admin.ModelAdmin): 
    form = ConversationForm 
    list_display = ['conversation_name'] 
    inlines = [ 
     ConversationMessageInline, 
    ] 

私forms.py:

class ConversationMessageForm(forms.ModelForm): 
    model = ConversationMessage 
    from_message = forms.ModelChoiceField(MessageList.objects.all(), 
            widget=forms.Select(attrs= 
            {"onChange":'refresh()'})) 
    class Media: 
     js = ('js/forms_event.js',) 

class ConversationForm(forms.ModelForm): 
    model = Conversation 
    class Media: 
     js = ('js/forms_event.js',) 

私forms_event.js:

function refresh() { 
    alert("salut la planete"); 
} 

私がいる時、「会話を追加」を追加していないのonchangeイベント:

enter image description here

+0

"のonChange" または "のonchange"? – itzMEonTV

答えて

0
あなただけのインラインクラスのデフォルトの形式をオーバーライドし、TabularInlineクラスにあなたに新しいフォームを追加する必要が

class ConversationMessageInline(admin.TabularInline): 
    model = ConversationMessage 
    form = ConversationMessageForm 
0

私は、Pythonとjavascriptを混在させるのは悪い習慣だと思いますので、フォームにスクリプトを埋め込まないでください。

代わりに、あなたは自分の.jsファイル内でこのような何かを行うことができます:

var from_message_field = document.getElementById('<id of the field>'); 
from_message_field.addEventListener('change', refresh); 
関連する問題