我看到原帖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的新手,所以请给我一些指导。
答案 0 :(得分:1)
答案的作者不是很全面,但最后一行有一个提示:
点击一个视图,只需传入id,查询它 并将其返回给电话。像魅力一样。
get_template_info
不是Django的内置部分。这是他为处理AJAX请求而创建的视图的名称。您必须创建自己的视图才能返回所需的信息。