当我尝试在内联字段中添加属性时,没有添加任何内容。我想为每个select选择一个相同的类,以便在select change上添加一个javascript事件。
这是我的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,
]
my 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',)
my forms_event.js:
function refresh() {
alert("salut la planete");
}
当我在“添加对话”时,没有添加事件onchange:
答案 0 :(得分:1)
您只需要覆盖Inline类的默认形式,并将新表单添加到TabularInline类,如下所示:
class ConversationMessageInline(admin.TabularInline):
model = ConversationMessage
form = ConversationMessageForm
答案 1 :(得分:0)
我认为混合使用python和javascript是一种不好的做法,所以不要在表单中嵌入脚本。
相反,您可以在.js文件中执行类似的操作:
var from_message_field = document.getElementById('<id of the field>');
from_message_field.addEventListener('change', refresh);