私のクラスには、約12 のフィールドがあります。1 つのフィールドはstatusで、もう1 つのフィールドはreasonです。django admin の編集ページに移動すると、status=='rejected' の場合にのみ 2 番目のフィールド (理由フィールド) を表示したいと考えています。問題は非常に単純です。ユーザー入力に従ってフィールドを表示するだけです。
2 に答える
3
残念ながら、これを純粋にサーバー側で行う簡単な方法はありません。ただし、ステータスに基づいて理由フィールドの可視性を切り替える JavaScript を使用すると、比較的簡単に実行できるはずです。以下は、jQuery を使用した例です。
$(document).ready(function() {
// Toggle visibility on page load
setReasonVisibility();
// Toggle visibility on status change
$('form #id_status').bind('change', setReasonVisibility)
function setReasonVisibility() {
var form = $('form');
var status = $(form).find('#id_status').val();
if (status == 'rejected')
$(form).find('#id_reason').show();
else
$(form).find('#id_reason').hide();
}
});
Media
フォームに JavaScript ファイルをロードさせるには、次のように、モデルのフォームへのクラスでそれを参照する必要があります。
class YourModelForm(forms.ModelForm):
class Meta:
model = YourModel
class Media:
js = ('path/to/jquery.js', 'path/to/your-js-file.js')
このソリューションは、Django 管理内でシームレスに機能するはずです。
于 2009-06-02T07:56:28.457 に答える
0
変更リストを参照しているのか、アイテムの個々の編集ページを参照しているのかは明確ではありません。後者の場合、@Guðmundur H には優れた jQuery ソリューションがあります。前者の場合、モデルにreason_if_rejectedメソッドを提供することでそれを行うことができます。このメソッドは、ステータスが「拒否」の場合は理由を返し、それ以外の場合は空の文字列を返します。次に、このメソッドの名前をlist_display設定に含めることができます。
于 2009-06-02T15:23:43.123 に答える