根据外键选择在django-admin中填充值...再次

时间:2012-03-22 20:42:40

标签: python django django-admin

我看到原帖Populating values in django-admin based on a foreign key selection,但不理解扩展示例的模板:



    {% extends "admin/change_form.html" %}

    {% block extrahead %}
        
        
          $(document).ready(function() {
            $('#id_template').change(function() {
              $.ajax({
                type: 'POST',
                url: "{% url get_template_info %}",
                data: {'template_id': $('#id_template').val()},
                success: function(data, _status) {
                  $('#id_throttle').val(data.throttle);
                  $('#id_rate_limit').val(data.rate_limit);
                  $('#id_product').val(data.product);
                  $('#id_tier_group').val(data.tier_group);
                },
                dataType: "json"
              });               
            });
          });
        
    {% endblock %}

我正在尝试做类似的事情,但不明白网址get_template_info的来源。

我假设应该是一个属于TemplateAdmin(admin.ModelAdmin)的方法,但我不确定。 django文档中唯一的线索是https://docs.djangoproject.com/en/dev/ref/contrib/admin/,它提供了一个例子



    class MyModelAdmin(admin.ModelAdmin):

    # A template for a very customized change view:
    change_form_template = 'admin/myapp/extras/openstreetmap_change_form.html'

    def get_osm_info(self):
        # ...
        pass

    def change_view(self, request, object_id, extra_context=None):
        extra_context = extra_context or {}
        extra_context['osm_data'] = self.get_osm_info()
        return super(MyModelAdmin, self).change_view(request, object_id,
            extra_context=extra_context)

但往往更加神秘!我是Django的新手,所以请给我一些指导。

1 个答案:

答案 0 :(得分:1)

答案的作者不是很全面,但最后一行有一个提示:

  

点击一个视图,只需传入id,查询它   并将其返回给电话。像魅力一样。

get_template_info不是Django的内置部分。这是他为处理AJAX请求而创建的视图的名称。您必须创建自己的视图才能返回所需的信息。