我正在尝试使用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
为什么会这样?还有比我发现的更好的方法(即单一类定义)吗?
答案 0 :(得分:0)
第一个代码不起作用,因为它在modeladmin类中设置了表单字段,它没有任何理由可以工作,你在任何文档中都没有看到过。
你试过这个吗?
@admin.register(RaffleTicket)
class RaffleTicketAdmin(admin.ModelAdmin):
model = RaffleTicket
form = autocomplete_light.modelform_factory(RaffleTicket)