【发布时间】:2011-11-29 14:18:36
【问题描述】:
在 django 管理员的更改列表中,我想使用 list_editable 为 ManyToManyField 显示 django-autocomplete 小部件。
我在这里找到了类似的东西:list_editable and widgets
通常在 list_display 中包含 ManyToManyField 会引发 ImproperlyConfigured 异常,例如:
""'BookAdmin.list_display[2]', 'author' 是不支持的 ManyToManyField。"
我(也许不明智地)从 contrib/admin/validate.py 中删除了 3 行以绕过异常。 :)
我现在让它吐出以下内容,很接近(?)但没有雪茄。
关于如何进行的任何想法?有更好的方法吗?
这是我目前所拥有的:(AuthorAutocomplete 在常规管理表单中运行良好)
class AuthorAutocomplete(AutocompleteSettings):
search_fields = ('first_name', 'last_name')
class BookAdmin(AutocompleteAdmin, admin.ModelAdmin):
def get_changelist_form(self, request, **kwargs):
kwargs.setdefault('form', AuthorAutocompleteForm)
return super(BookAdmin, self).get_changelist_form(request, **kwargs)
list_display = ['isbn', 'title', 'author', 'publisher']
#...
class AuthorAutocompleteForm(forms.ModelForm):
class Meta:
model = Book
author = AuthorAutocomplete
谢谢!
【问题讨论】:
-
糟糕的开发人员,糟糕。永远,永远,永远改变 Django 源代码。我自己没有尝试过这样做,但如果管理应用程序明确禁止
ManyToManyFields,这是有原因的。在保存模型的过程中,某处无法正常运行。如果它是对您很重要的功能,请考虑为它提交错误。否则,你可能只是运气不好。修补 Django 源代码将为您和将来碰巧继承您的代码的任何可怜的开发人员制造维护噩梦。
标签: django autocomplete django-admin manytomanyfield