1

我正在尝试使用 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

为什么会这样?有没有比我发现的更好的方法(即单一类定义)来做到这一点?

4

1 回答 1

0

第一个代码不起作用,因为它在 modeladmin 类中设置了表单字段,这根本没有理由起作用,您从未在任何文档中看到过。

你试过这个吗?

@admin.register(RaffleTicket)
class RaffleTicketAdmin(admin.ModelAdmin):
    model = RaffleTicket
    form = autocomplete_light.modelform_factory(RaffleTicket)
于 2016-01-02T02:44:06.870 回答