Django可选动态内联线

Django可选动态内联线,django,dynamic,autocomplete,inline,selectable,Django,Dynamic,Autocomplete,Inline,Selectable,我将django可选()用于 用于在其中一个内联字段上获取自动完成功能的管理列表行。它适用于创建时添加的内联线。我遇到的问题是,当用户向内联添加另一行时,没有添加自动完成功能 这里有一个关于这个问题的bug和修复程序 而查看底部附近的jquery.dj.selectable.js是: if (typeof(django) != "undefined" && typeof(django.jQuery) != "undefined") { if (django.jQuery

我将django可选()用于 用于在其中一个内联字段上获取自动完成功能的管理列表行。它适用于创建时添加的内联线。我遇到的问题是,当用户向内联添加另一行时,没有添加自动完成功能

这里有一个关于这个问题的bug和修复程序

而查看底部附近的jquery.dj.selectable.js是:

if (typeof(django) != "undefined" && typeof(django.jQuery) != "undefined") {
    if (django.jQuery.fn.formset) {
        var oldformset = django.jQuery.fn.formset;
        django.jQuery.fn.formset = function(opts) {
            var options = $.extend({}, opts);
            var addedevent = function(row) {
                bindSelectables($(row));
            };
            var added = null;
            if (options.added) {
                var oldadded = options.added;
                added = function(row) { oldadded(row); addedevent(row); };
            }
            options.added = added || addedevent;
            return oldformset.call(this, options);
        };
   }
}
看起来这应该可以使自动完成与动态添加的行一起工作,但是我不知道该怎么做才能工作。 admin TABLARINLINE.html具有inline_admin_表单集,因此我应该检查它,而不是像上面代码中那样检查django.jQuery.fn.formset吗?或者以某种方式将inline_admin_formset添加到django.jQuery.fn

非常感谢你的建议


我使用的是0.2版。 在forms.py中有一个内联表单:

    class GrammarInlineForm(forms.ModelForm):
        class Meta:
            model = Grammar
            widgets = {
            'description' :forms.Textarea(attrs={'cols': 80, 'rows': 10, 'class': 'grammarInline'}),
            'title' : selectable.AutoCompleteSelectWidget(lookup_class=GrammarLookup, allow_new=True),
        }   
        exclude = ('creation_date', 'creator', 'plan')

        def __init__(self, *args, **kwargs):
        super(GrammarInlineForm, self).__init__(*args, **kwargs)
在admin.py中,创建内联管理员并将其添加到主管理员(PlanAdmin):

在阅读了您的票据后,我尝试绑定到inlines formsetadd事件,如下所示

    django.jQuery('.ui-autocomplete-input').live('formsetadd', function(e, row) {
        console.log('Formset add!');
        console.log($(row));
       });
但是看看django/contrib/admin/media/js/inlines.js 这些触发器似乎不在django的1.3.1版中。是否需要绑定到添加内联时触发的事件?这里也有类似的情况
但这是在使用formset插件。有没有办法将bindSelectable(行)用于管理内联?

您发布的
jquery.dj.selectable.js
代码用于在添加新行时修补
django/contrib/admin/media/js/inlines.js
调用
bindSelectable(行)
。已打开,因此此猴子补丁不是必需的,但尚未关闭,并且可能不会关闭Django 1.4。同样地,你不需要做任何事情来让它工作。您不需要更改模板。您不需要编写任何额外的JS


项目源代码中有一个使用动态表格内联的工作示例:

您不必做任何事情来实现这一点。您正在运行哪个版本?好的,谢谢。如果有帮助的话,通过将bindSelectables('row')添加到tablar.html中的onAfterAdded函数中,问题就解决了。是的,这会起作用,但这正是我编写此修复程序时试图避免的。再次请注意,示例项目中没有修改
admin/edit_inline/tabular.html
,但动态内联线正在工作(至少对我来说)。
    django.jQuery('.ui-autocomplete-input').live('formsetadd', function(e, row) {
        console.log('Formset add!');
        console.log($(row));
       });