我正在使用django DateTimePicker小部件 - AdminSplitDateTime() - 在事件创建应用程序中,当用户中的loged拥有超级用户权限时,每件事都很顺利,但是当普通用户尝试访问创建表单时,小部件不会出现。
我不知道为什么会这样?以及如何克服这种行为?
这是我页面中包含的脚本
<script type="text/javascript" src="/admin/jsi18n/"></script>
<script type="text/javascript" src="/static/admin/js/core.js"></script>
<script type="text/javascript" src="/static/admin/js/admin/RelatedObjectLookups.js"></script>
<script type="text/javascript" src="/static/admin/js/jquery.min.js"></script>
<script type="text/javascript" src="/static/admin/js/jquery.init.js"></script>
<script type="text/javascript" src="/static/admin/js/actions.min.js"></script>
<script type="text/javascript" src="/static/admin/js/calendar.js"></script>
<script type="text/javascript" src="/static/admin/js/admin/DateTimeShortcuts.js"></script>
她是我的表格代码
class Form(ModelForm):
"""
"""
class Meta:
model = Model
exclude = ('creator')
def __init__(self, *args, **kwargs):
super(Form, self).__init__(*args, **kwargs)
self.fields['start'].widget = widgets.AdminSplitDateTime()
self.fields['end'].widget = widgets.AdminSplitDateTime()
答案 0 :(得分:0)
我认为/admin/jsi18n/
对于编外人员来说是无法访问的。您应该在第一个小部件之前添加一个JS脚本,并在那里定义一些变量:
var catalog = {}
function pluralidx(count) { return (count == 1) ? 0 : 1; }
function gettext(msgid) { return msgid; }
function ngettext(singular, plural, count) { return count == 1 ? singular : plural; }
function gettext_noop(msgid) { return msgid; }
function interpolate(fmt, obj, named) {
if (named) {
return fmt.replace(/%\(\w+\)s/g, function(match){return String(obj[match.slice(2,-2)])});
} else {
return fmt.replace(/%s/g, function(match){return String(obj.shift())});
}
}
这些来自管理员用户下的django的/admin/jsi18n/
。
P.S。您可以在浏览器的JS控制台中找到JS错误,它可能会为您指明方向。