【发布时间】:2016-10-12 13:52:51
【问题描述】:
我已按照 django-autocomplete-light 的教程进行操作 http://django-autocomplete-light.readthedocs.io/en/master/tutorial.html 但我有以下问题。
我有模特
class Order(models.Model):
client = models.ForeignKey(Client)
product = ....
如果我按照教程中的说明创建表单
class OrderForm(forms.ModelForm):
class Meta:
model = Order
fields = ('__all__')
widgets = {
'client': autocomplete.ModelSelect2(url='ordersapp:client-autocomplete')
}
在 admin.py 中
class OrderAdmin(admin.ModelAdmin):
form = OrderForm
我得到了想要的结果,它是为提交的客户自动完成的。
但如果我不想创建表单并改为使用
class OrderAdmin(admin.ModelAdmin):
.....
有没有办法让客户端字段的自动完成小部件? 我很感激任何帮助。
【问题讨论】:
-
您似乎无法在不实际提供要使用的表单的情况下自定义管理表单。您指定其工作的方式是执行此操作的标准方式。您有什么不想创建表单的原因吗?
-
您始终可以在您正在创建的 ModelAdmin 类上覆盖 get_form,但我想说您现在这样做的方式更简洁、更易于理解。 ModelAdmin 类基于模型创建标准的自定义表单。您需要一个自定义的表单,这正是您可以指定要使用的表单的原因。
-
好吧,我已经在 OrderAdmin 中实现了一些功能,实现了操作并覆盖了 get_changelist_view 和 get_urls。还有一个多对多字段的插件,水平过滤器,我想保留。
标签: django django-autocomplete-light django-modeladmin