[Answered ]-How to read/write input fields in Django-admin tabular inlines using ajax?

2๐Ÿ‘

โœ…

  1. urls.py

    from django.conf import settings
    
    
    urlpatterns = patterns('',
        (r'^json/tshirt/$', json_order),
        (r'^site_media/(?P<path>.*)$', '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);
            });
        });
    });
    
๐Ÿ‘คiridescent

Leave a comment