我安装了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
答案 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
要么
Admin
课程必须继承自AjaxSelectAdmin
AjaxSelectAdmin
作为mixin(多重继承)autoselect_fields_check_can_add
get_form()
醇>
如果您需要为自己的其他目的实施get_form
,则只需要执行第三种情况。最好从AjaxSelectAdmin
继承。
您获得ADD图标的其他可能原因是您无权添加该对象。 autoselect_fields_check_can_add
使用Django的标准管理员权限进行检查。