在django管理更改列表中的ManyToManyField小部件



在django管理的更改列表中,我想使用list_editable来显示一个自动完成的插件。

我在这里发现了类似的东西:list_editable和widgets

通常在list_display中包含ManyToManyField会引发一个ImproperlyConfigured异常,例如:

" BookAdmin。list_display[2]', 'author'是一个不支持的ManyToManyField。"

我(也许不明智)从contrib/admin/validate.py中删除了3行来绕过异常。:)

我现在让它吐出以下内容,这很接近(?),但没有雪茄。

& lt; django.db.models.fields.related。ManyRelatedManager对象在0x1032a85d0>

对如何继续有什么想法吗?有更好的方法吗?

这是我目前所拥有的:(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

谢谢!

要在您自己的代码中获取manymany字段的值,以便可以显示它们的值,您可以执行以下操作。我以list_display为例。

class TestAdmin(admin.ModelAdmin):
    def get_some_value(self):
        return ", " . join([x.__str__() for x in self.manytomany_field.all()])
    get_some_value.short_description = 'Title'  # sets column header title
    list_display = ('get_some_value',)  # define Model's fields to be presented on admin changelist

其中manytomany_field是您给manytomany_field的名称,get_some_value是分配给short_description的类中的方法。

我真傻。我认为William的manytomany_field是一个内置的ModelAdmin对象。所以我按原样运行了他的代码(在join之后放入缺失的括号)。

说来奇怪,它运行时没有产生错误消息。但是(None)出现在我应该得到值的时候。我觉得很奇怪,当我搜索"django model.Admin.manytomany_field"时,我找不到任何东西。哈!

所以最终我意识到我要用多对多字段的NAME代替manytomany_field。它的工作原理!

相关内容

  • 没有找到相关文章

最新更新