Django模型对象,管理员和javascript文件

时间:2017-03-20 00:45:30

标签: django django-admin

我在django admin中遇到了对象问题。我有一个模特:

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:

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

但是我无法从这个查询集中获取类别值...我想在我的js文件中遍历这个查询集。类似的东西:

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

1 个答案:

答案 0 :(得分:1)

以下是一些选项:

  • 您可以使用Django显示或隐藏页面的不同部分 模板,不需要使用JS。
  • 插入JS代码直接向Django声明这些JS变量 模板如:

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

并在JS代码中使用GROUP_OBJECT_CATEGORY全局变量。

  • 在Django中创建一个端点(视图),它将返回组对象 JSON格式并在JS中检查该对象的group值:

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