2011-09-19 38 views
1

我安装的Django的Ajax-选择应用程序, 其精彩的应用程序有自动完成选项, 但在admin.py 添加形式(+)按钮,这是我可以补充后新对象我装戴例子的快照,Django的AJAX选择添加按钮

,我发现这是分裂什么挂钩的清洁方法重写, 但对我来说我只是想添加按钮写入的值代码

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

回答

1

终于让我找到在admin.py 在文档文档误写成的解决方案作为其,

你应该添加此代码,我在我的凯德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

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

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

要么

  1. Admin类必须从AjaxSelectAdmin
  2. 继承你应该使用AjaxSelectAdmin作为一个mixin(多继承)
  3. 你可以在你get_form()
  4. 插入 autoselect_fields_check_can_add

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

为什么你得到一个ADD图标的其他可能的解释是你没有权限添加对象。 autoselect_fields_check_can_add使用Django的标准管理权限进行检查。