django - Django的ModelAdmin有没有办法在渲染ManyToMany选择框时显示不同的字段?
问题描述
我有一个带有ManyToManyField
.
在渲染管理页面以添加模型实例时,ModelAdmin
渲染一个带有类似选项的选择框SomeModel object(7c158809-4c9b-4d44-b3ac-9f225b8bd076
(模型使用 uuid 作为其主键)。
如何让 Django 管理员使用不同的、更友好的字段呈现选择框?
解决方案
尽管有最后一个答案,但如果您的 Django 版本大于 2.0,一种优化和干净的方法是为您的SomeModel
. 就像下面的代码:
@admin.register(SomeModel)
class SomeModelAdmin(admin.ModelAdmin):
list_display = ('name', 'created_time', ) # change this part to your fields
search_fields = ('name', ) # If you have this field in your model
然后在您的源模型管理代码中(该模型与 有 M2M 关系SomeModel
)添加一个属性 as auto_complete_fields
(从版本 2 添加到 Django)并将其引用到SomeModelAdmin
. 类似于以下代码:
@admin.register(SourceModel)
class SourceModelAdmin(admin.ModelAdmin):
list_display = ("name", "created_time", )
search_fields = ('name', )
autocomplete_fields = ['some_model_field', ] # i.e. your M2M field in that model
推荐阅读
- python - 使用 pd.to_datetime 通过输入数据框中不同列中的年、月、日来形成日期
- python - 重构为 JSON 数组时,JSON 中的 Python 不可散列类型列表
- case - 无法创建支持案例
- jenkins - 如何从其他流水线动态加载 Jenkins 流水线文件
- performance - 如何在jmeter中获取网站的确切加载时间
- react-native - 重定向不适用于 componentWillMount() react-native-router-flux
- javascript - 如何动态更改 for 循环中的键
- php - 返回 NULL 的关系
- angular-reactive-forms - 以编程方式在另一个formGroup内的formGroup而不使用formArray
- azure - Azure Functions - 使用 CloudBlockBlob 而非流的 StorageBlob 触发器方法签名