django ajax选择添加按钮

时间:2011-09-19 17:55:34

标签: python ajax django

我安装了django-ajax-select app, 它是一个很棒的应用程序,有自动完成选项, 但在admin.py中添加表单后 (+)按钮,我可以添加新对象,我附上了一个例子的快照,

我找到了一个代码,它将通过挂钩清理方法写入的值拆分为覆盖, 但在我的情况下,我只想要添加按钮

def clean(self, value):
if value:
    lookup = get_lookup(self.channel)
    objs = lookup.get_objects( [value] )
    if objs:
        return objs[0]
    else:
        firstname, surname = value.split(" ")
        gender = self.channel.split("_")[0]
        new_skater = Skater(name=firstname, surname=surname, gender=gender)
        return new_skater
else:
    if self.required:
        raise forms.ValidationError(self.error_messages['required'])
    return None

enter image description here

2 个答案:

答案 0 :(得分:1)

最后我发现解决方案是在文档文档中错误地写的,

admin.py中的

你应该添加这个代码,在我的cade我的管理员calss是orderAdmin

def get_form(self, request, obj=None, **kwargs):
    form = super(orderAdmin,self).get_form(request,obj,**kwargs)
    autoselect_fields_check_can_add(form,self.model,request.user)
    return form

答案 1 :(得分:1)

文档显示与接受的答案完全相同的文本。

https://github.com/crucialfelix/django-ajax-selects#example

要么

  1. 您的Admin课程必须继承自AjaxSelectAdmin
  2. 您应该使用AjaxSelectAdmin作为mixin(多重继承)
  3. 您可以在autoselect_fields_check_can_add
  4. 中插入get_form()

    如果您需要为自己的其他目的实施get_form,则只需要执行第三种情况。最好从AjaxSelectAdmin继承。

    您获得ADD图标的其他可能原因是您无权添加该对象。 autoselect_fields_check_can_add使用Django的标准管理员权限进行检查。