0

私は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()
4

1 に答える 1

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())});
  }
}

これらは/admin/jsi18n/、管理者ユーザーの下のdjangoから取得されます。

PSあなたはあなたのブラウザのJSコンソールでJSエラーを見つけることができます、それはあなたに方向性を与えるかもしれません。

于 2012-04-25T04:24:29.020 に答える