我正在将Django 2.2与Python 3.7结合使用,我的问题分为两部分:
CharField
有多个选择,并且只有charfield
与{{1 }}的值,因此,如果我将其更改为某个选项,则会在下面显示另一个null
,并提供更多选项供您选择,当然,所有charfield
都在charfields
中定义,仅对管理网站,直到满足条件为止,我认为最好的方法是使用JavaScript,我在项目中添加了models.py
文件夹,但是我对如何在管理网站上集成JavaScript不太了解。那?/media/
和.show()
方法,任何人都可以为我指出建立简单方法的正确方向是否根据其他条件显示或隐藏字段?我的管理类包含以下要隐藏和显示的字段的模型:
.hide()
如果您看到“食谱序列”有多个值,则我希望motor2、3、4以及其余的按照上一个出现,所以不知道如何从JavaScript访问这部分代码>
答案 0 :(得分:1)
我通过以下方式自己解决了这个问题,我在管理类RecipesAdmin中添加了指向Java脚本文件的Media类,并在fieldsets数组中定义了类:
class RecipesAdmin(admin.ModelAdmin):
fieldsets = [
("Title/Description", {"fields": ["recipe_title", "recipe_ingredients"]}),
("Ingredients sequence", {"fields": ["sequence"]}),
(None, {"fields": ["sequence2",], "classes": ("HiddenSequence",)}),
("Photo and Create Date", {"fields": ["recipe_photo", "recipe_created"]})
]
class Media:
js = ('main/JS/ShowOrHideSequence.js',)
如您所见,字段“ sequence2”具有类“ HiddenSequence”,这将使我可以使用JavaScript控制一切,JavaScript代码如下:
$(function($) {
$(function() {
var sequence = $('#id_sequence'), verified = $('.HiddenSequence');
function toggleVerified(value, HiddenSeq) {
if (value !== '') {
HiddenSeq.show();
} else {
HiddenSeq.hide();
}
}
// show/hide on load based on pervious value of selectField
toggleVerified(sequence.val(), verified);
// show/hide on change
sequence.change(function() {
toggleVerified($(this).val(), verified);
});
});
});
请注意,我在互联网上发现此JavaScript不是我自己制作的,您可以发现,它的作用是验证值“ sequence”是否不同于“”,如果为true,则显示sequence2 ,如果为false,则将其隐藏。
javascript文件必须位于静态文件夹中。