如何使用ajax在Django-admin表格内联中读/写输入字段?

我正在寻找使用ajax动态更新内联条目的方法。 即,当用户从下拉框中选择项目时,可以用数据填充相关的输入字段。

ajax的views.py部分应该很简单。 但对我来说一个问题是如何在js中获取下拉框的名称,这些名称可以动态添加。

以下是models.py和admin.py:

models.py

class Tshirt: designer = CharField() default_wording = CharField() class Order: date = DateField() class Order_item: order = ForeignKey(Order, related_name='order') tshirt = ForeignKey(Tshirt) wording = CharField() 

admin.py

 class Order_Inline(TabularInline): model = Order_item fk_name = 'order' class Order_Admin(ModelAdmin): inlines = [Order_Inline,] 

  1. urls.py

     from django.conf import settings urlpatterns = patterns('', (r'^json/tshirt/$', json_order), (r'^site_media/(?P.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}), ... ) 
  2. views.py

     from django.core import serializers def json_order(request): search = request.GET.get('tshirt_id') if search: result = Tshirt.objects.filter(id=search) return HttpResponse(serializers.serialize('json', result, fields=('default_wording')), mimetype='application/json') return HttpResponse() 
  3. admin.py

     class Order_Inline(TabularInline): model = Order_item fk_name = 'order' class Order_Admin(ModelAdmin): inlines = [Order_Inline,] class Media: js = ('/media/js/jquery.js', '/site_media/js/tshirt.js',) 
  4. _settings.MEDIA_ROOT_ / JS / tshirt.js

     $(document).ready(function() { $(".module").delegate("[id$=-tshirt]", "change", function() { var row = $(this).attr("id").split('id_order_item-')[1].split("-tshirt")[0]; var tshirt_id = $(this).val(); var data = {"tshirt_id":tshirt_id}; $.getJSON("/json/tshirt", data, function(data) { var dw = data[0]["fields"]["default_wording"]; $("input[id='id_item-"+row+"-wording']").val(dw); }); }); });