Django DateTimePicker只显示我的应用程序内的超级用户

时间:2012-04-24 21:32:44

标签: django django-forms django-admin datetimepicker django-widget

我正在使用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()

1 个答案:

答案 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错误,它可能会为您指明方向。