Django Admin: Заполнение полей администратора на основе выбора строки таблицы

Мне нужна помощь в импорте значений товаров (сохраненных в базе данных из предыдущих заказов) на основе поиска клиента по id. Это должно происходить после нажатия пользователем кнопки в панели администратора. Итак, при нажатии на кнопку 'Importar do histórico' Поля, которые нужно заполнить . откроется одно окно со всей историей элементов этого клиента (представленной в виде таблицы с помощью django_tables2) Таблица с результатами запроса по id клиента

Итак, когда я нажимаю на одну из строк таблицы, то значения должны заполнить поля внутри админ панели.

Ниже приведена часть моего 'admin.py'. Модель 'pedido_item' является инлайном модели 'pedido'.

class itensInline(admin.StackedInline):
    form    =   pedidoItemForm
    model   =   pedido_item
    formfield_overrides = {
        models.CharField: {'widget': TextInput(attrs={'size':'10'})},
        models.Choices: {'widget': Select(attrs={'size':'20'})},
    }
    raw_id_fields   =   ('cd_pedido',)
    radio_fields    =   {'cd_tipo_fixacao_encosto':  admin.HORIZONTAL, 'cd_tipo_fundo_encosto':  admin.HORIZONTAL, 'cd_tipo_cor_fundo_encosto': admin.HORIZONTAL,'id_montagem': admin.HORIZONTAL}
    fieldsets       =   (
        ('Dados Obrigatórios', {
            'fields': (('quantidade'),('modelo_ar','modelo_a'),('modelo_er','modelo_e'),'tecido','cd_tipo_fundo_encosto','cd_tipo_cor_fundo_encosto','cd_tipo_costura','cd_tipo_fixacao_encosto','fixacao_encosto')
            }
        ),
        ('Tipo de Montagem',{
            'fields' : ('id_montagem',)
        }
        ),
        ('Montada em base',{
            'classes'  : ('base','pretty'),
            'fields' : ('base', 'opcao_braco','braco')
        }
        ),
        ('Somente Estofamento',{
            'classes'  : ('est','pretty'),
            'fields' : ('porca_garra',)
        }
        ),
    )
    class Media:
        js = ('admin/js/vendor/jquery/jquery.js','admin/js/jquery.init.js','js/admin.js','js/importar.js','js/autorizarPedido.js','js/importarPopup.js')
    extra   =   0

    def has_edit_permission(self, request):
        return False

class processoInline(admin.StackedInline):
    model   =   pedido_historico
    exclude =   ('observacao',)
    extra   =   0
    def has_edit_permission(self, request):
        return False

@admin.register(pedido)
class pedidoAdmin(admin.ModelAdmin, ExportCsvMixin):
    formfield_overrides =   {
        models.CharField:   {'widget': TextInput(attrs={'size':'20'})},
        models.TextField:   {'widget': Textarea(attrs={'rows':4, 'cols':60})},
    }
    readonly_fields     =   ('data_emissao','data_cadastro',)
    list_display        =   ('cd_pedido', 'cd_cliente', 'cd_prioridade', 'id_status', 'data_cadastro','responsavel_capitalize')
    list_display_links  =   ('cd_pedido', 'cd_cliente') 
    list_filter         =   ('cd_prioridade', 'cd_responsavel', 'id_status', 'data_cadastro', 'data_emissao')
    ordering            =   ('cd_pedido',)
    search_fields       =   ('cd_pedido__exact','cd_cliente__startswith')
    raw_id_fields       =   ('cd_cliente',)
    fieldsets           =   (
        ('Dados Obrigatórios', {
            'fields': (('cd_cliente','data_cadastro'),'data_emissao',('data_producao','data_entrega'),'cd_responsavel',('id_status','cd_prioridade'))}),
        ('Outros detalhes',{
            'classes':('collapse','extrapretty'),
            'fields' : ('instrucao','observacao')
        }),
    )
    actions     =   ['export_as_csv']
    inlines     =   [itensInline]

Поиск вида:

def search(request):

results = []

id = request.GET.get('id')
   

if id is None:
    id = None
else:
    results =   pedido_item.objects.filter(Q(cd_pedido__cd_cliente=id)).all()
itens_cliente   =   ItensClienteTable(results)

return render(request, 'technocomfort/searchForm.html', {'itens_cliente': itens_cliente})

Модальное окно, которое получает id из поля клиента (внутри админки) и передает в просмотр поиска с помощью AJAX.

(function ($) {
function windowpop(url, width, height) {
    var left = (screen.width / 2) - (width / 2);
    var top = (screen.height / 2) - (height / 2);
    return window.open(url, "Importar do Histórico", "location=no,directories=no,menubar=no,scroolbars=no;toolbar=no,status=no,resizable=no,copyhistory=no,width=" + width + ",height=" + height + ",top=" + top + ",left=" + left + ",popup,rel=noreferrer");
}
function importarPopup(id) {
    var width = '750px';
    var height = '350px';
    var url = '/search/?id=' + id;
    $.ajax({
        url: '/search/',
        type: 'GET',
        data: {'id':id},
        success: function(data) {
            windowpop(url, width, height);
            }
    });
}
$(document).ready(function(){
    $("button.importar").on('click', function(){
        var id  = $('.vForeignKeyRawIdAdminField').val();
        importarPopup(id);
    });
});
})(django.jQuery);

Я уже пытался передать значения из представлений как параметры url, но безуспешно.

Вернуться на верх