Django DateTimePicker отображается только для суперпользователей в моем приложении
Я использую виджет django DateTimePicker - AdminSplitDateTime() - в приложении для создания событий все идет хорошо, когда вошедший в систему пользователь имеет права суперпользователя, но когда обычный пользователь пытается получить доступ к форме создания, виджет не отображается.
Я не знаю, почему это так? и как побороть это поведение?
это сценарии, включенные в мою страницу
<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 ответ
Похоже /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())});
}
}
Они взяты из Джанго /admin/jsi18n/
под учетной записью администратора.
PS Вы можете найти ошибки JS в консоли JS вашего браузера, это может дать вам направление.