2017-03-20 18 views
0

我在django管理中的對象有問題。我有一個模型: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

這裏有一些選擇:

  • 您可以顯示或使用Django 模板,無需使用JS爲隱藏頁面的不同部分。
  • 插圖JS代碼直接宣告那些JS變量,以你的Django 模板,如:在您的JS代碼

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

,並使用GROUP_OBJECT_CATEGORY全局變量。

  • 創建你的Django端點(視圖)將在 JSON格式返回組對象,並檢查您的JS該對象的group值:

$.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 = Group.objects.values('category') context ['group'] = group到我的視圖和console.log(GROUP_OBJECT_CATEGORY)到我的js文件。它顯示GROUP_OBJECT_CATEGORY。我不知道如何在我的管理員視圖中執行同樣的操作。 – jundymek