2017-03-20 15 views
0

django adminのオブジェクトに問題があります。私はモデルを持っています:Djangoモデルのオブジェクト、管理者とjavascriptファイル

class Group(models.Model): 
    name = models.CharField(max_length=30) 
    description = models.TextField() 
    pay = models.CharField(
     max_length=10, 
     choices=(('PAID', 'PŁATNY'), ('FREE', 'DARMOWY')), 
     default='FREE') 
    time = models.CharField(
     max_length=3, 
     choices=(('T', 'TAK'), ('N', 'NIE')), 
     default='N', 
     help_text='Czy wpis ma być wyłączony po jakimś czasie czy bezterminowy') 
    days = models.IntegerField(default=1) 
    premium_box = models.CharField(
     max_length = 3, 
     choices=(('T', 'TAK'), ('N', 'NIE')), 
     default='N', 
     help_text='Czy wpis ma być wyświetlany w okienku reklamowym') 
    category = models.CharField(
     max_length = 2, 
     choices=(('1','1'), ('2','2')), 
     ) 

    def __str__(self): 
     return self.name 

今のところ私は2つのグループオブジェクトを持っています:無料とプレミアム。私はどのようにそれらのオブジェクトの値をjavascriptファイルで使用できますか?私はこのようなものが必要です:

if (GROUP.OBJECT.CATEGORY < 2) { 
     $("div > fieldset > div.form-row.field-category1").hide(); 
     $("div > fieldset > div.form-row.field-subcategory1").hide(); 
     $("#group").html('<ul><li>- Additional text</li>'); 
    } 
if (GROUP.OBJECT.TIME == 'N') { 
    $(SOME.FIELD).hide() 
    } 

Djangoで可能ですか?

私は私のadmin.pyにこれを追加しました:

def changelist_view(self, request, extra_context=None): 
    extra_context = extra_context or {} 
    extra_context['groupaa'] = (Group.objects.values('category')) 
    return super(SiteAdmin, self).changelist_view(request, extra_context=extra_context) 

を私は私のjsファイルではconsole.log(GROUP_OBJECT_CATEGORY)を使用すると、私はクエリセットを取得します:

<QuerySet [{'category': '1'}, {'category': '2'}]> 

が、私は得ることができませんこのクエリーセットのカテゴリの値...私は私のjsファイルでこのクエリーセットを反復処理したいと思っています。ような何か:ここ

for (var i=0; i<=QUERYSET.length; i++) { 
    console.log(QUERYSET[i]); # get 1 and 2 values 
} 

答えて

1

は、いくつかのオプションがあります

  • あなたは、そのためのJSを使用する必要がジャンゴ テンプレートを使用していないページの異なる部分を表示または非表示にすることができます。

<script> var GROUP_OBJECT_CATEGORY = "{{GROUP.OBJECT.CATEGORY}}"; </script>

とあなたのJSコードでGROUP_OBJECT_CATEGORYグローバル変数を使用します。あなたのようなジャンゴ テンプレートに直接それらのJS変数を宣言

  • はめ込みJSコード。

    • JSON形式でグループオブジェクトを返し、あなたのJSにそのオブジェクトのgroup値をチェックしますあなたのDjangoのエンドポイント(ビュー)を作成します。

    $.getJSON("/api/get_object", function(object) { if(object.group && object.group < 2){ .... } });

  • +0

    それはあまりにも困難です私はどこでGROUP.OBJECT.CATEGORYを開始すべきですか?私はgroup = Group.objects.values( 'category')のようなものを私のadmin.pyに加えてvar GROUP_OBJECT_CATEGORYのグループを使用しようとしましたが、動作しません。私の習慣的な見解(管理者ではない)ではうまくいきます。 group = object.values( 'category') コンテキスト['group'] =私のビューにグループ化し、console.log(GROUP_OBJECT_CATEGORY)を自分のjsファイルに追加しました。 GROUP_OBJECT_CATEGORYが表示されます。私は私の管理画面で同じことをどうやって行うことができるのか分かりません。 – jundymek

    関連する問題