1

FilteredSelectMultipleを使用する必要があるDjangoプロジェクトを実行しています。これは、次のような例です。

crews = ModelMultipleChoiceField(
          queryset=Crew.objects.all(),
          widget=widgets.FilteredSelectMultiple(
            "Crews", is_stacked=False ),
          required=True
        )

もちろん、テンプレートでは、SelectBox、SelectFilter、core.jsを適切に呼び出しています。

<script type="text/javascript" charset="utf-8" src="/web/js/core.js" ></script>
<script type="text/javascript" charset="utf-8" src="/web/js/SelectFilter2.js" ></script>
<script type="text/javascript" charset="utf-8" src="/web/js/SelectBox.js" ></script>

これは、1.6未満のすべてのjqueryバージョンで機能します。問題は、実際にはjqueryバージョン1.6以降が必要なことです。理由は、更新されたvalidationEngineを使用する必要があるためです。なぜ、validationEngineを使用してフォームを検証するときはいつでも、それは実際にはフォームを超えており、そのフォームのdivにとどまりたいからです。

これを防ぐには、validationEngineを宣言するたびにいくつかのオプションを追加する必要があります。これは、次の方法で行います。

$("#addform").validationEngine({
  relative: true,
  overflownDIV: ".data_container",
});

新しいバージョンのvalidationEngineでは、少なくとも1.6以上のバージョンのjQueryが必要です。

これを解決するために私がこれまでに試した/考えたオプションは次のとおりです。

  1. 両方を適切にロードできる安定したjQueryバージョンを見つける

    • 私はこれで失敗しました。1.4.2から最新の1.7.1までのすべてのjQueryバージョンを使用しようとしましたが、うまくいきませんでした
  2. 2つのjQueryバージョンをロードする

    • これは良さそうに聞こえますが、私は試しましたが、それでも失敗しました
  3. validateEngineを別のものに変更します

    • これは私が本当に取りたくない最後の選択です。私たちはすでに多くのことを行っているので、別のものを使用すると、私たちが持っている以上の時間が必要になる可能性があります。

さて、私の本当の質問は、私がこれまで考えてきたオプション以外に解決策はありますか?FilteredSelectMultipleウィジェットをレンダリングするための更新されたjsファイルはまだありません。

4

1 に答える 1

0

Django は現在、jQuery 1.4.2 とともに出荷されています。トランクでさえ、まだそのバージョンを使用しています。したがって、すべてのウィジェットなどは、そのバージョンを念頭に置いて構築されています。おそらく、jQuery 1.6+ で後方互換性のない変更が行われた可能性があります。

つまり、基本的に 2 つの選択肢があります。

  1. 2 つのバージョンの jQuery (1.4.2 および 1.6+) をロードし、1 つを noConflict モードにすることができます。

  2. Django ウィジェットを使用せず、目的を満たす (Django 以外の) 1.6+ 互換の何かを見つけてください。

于 2012-02-06T15:38:00.070 に答える