django-autocomplete-light的管理表单

时间:2015-12-11 15:33:02

标签: python django autocomplete django-autocomplete-light

我正在尝试使用django-autocomplete-light为Django Admin表单添加一些不错的自动完成功能。 (DAL肯定似乎是最好的/最受欢迎的,并且似乎有很多很棒的功能,但是如果文档结构太差,那真是太遗憾了。)

如果我创建这样的管理表单,则不会创建自动填充字段:

@admin.register(RaffleTicket)
class RaffleTicketAdmin(admin.ModelAdmin):
    model = RaffleTicket
    code = forms.IntegerField()
    bought_by = autocomplete_light.ModelChoiceField('PersonAutocomplete')

但是如果我创建一个普通的ModelForm(我从未在其他任何地方使用过它)并将其直接推入我的ModelAdmin中,它会起作用,如下所示:

class RaffleTicketForm(forms.ModelForm):
    code = forms.IntegerField()
    bought_by = autocomplete_light.ModelChoiceField('PersonAutocomplete')


@admin.register(RaffleTicket)
class RaffleTicketAdmin(admin.ModelAdmin):
    model = RaffleTicket
    form = RaffleTicketForm

为什么会这样?还有比我发现的更好的方法(即单一类定义)吗?

1 个答案:

答案 0 :(得分:0)

第一个代码不起作用,因为它在modeladmin类中设置了表单字段,它没有任何理由可以工作,你在任何文档中都没有看到过。

你试过这个吗?

@admin.register(RaffleTicket)
class RaffleTicketAdmin(admin.ModelAdmin):
    model = RaffleTicket
    form = autocomplete_light.modelform_factory(RaffleTicket)