python - 显示通过 ManyToMany 字段的字段 django admin
问题描述
我正在开发一个用 Python 2.7 和 Django 1.11 开发的项目。
我试图在管理页面中显示两个通过 ManyToMany 字段的字段。
这里的模型:
class ModelZero(Model):
# some fields
mtm_field = models.ManyToManyField(to="ModelOne", through="ModelTwo")
class ModelOne(Model):
# some fields
field_1_1 = models.CharField(unique=True, max_length=200)
field_1_2 = models.BooleanField(default=True)
class ModelTwo(Model):
# some fields
field_2_1 = models.ForeignKey('ModelOne', on_delete=models.CASCADE)
field_2_2 = models.BooleanField(default=True)
在 ModelZero 管理页面中,我想显示来自 ModelZero 本身的一些字段以及来自 ModelTwo 的 field_2_1 和 field_2_2。
更详细地说,field_2_1 应该使用自定义小部件呈现。
请注意 ModelZeroAdmin 是内联的。
这里是管理页面:
class ModelZeroAdmin(DynamicRawIDMixin, admin.TabularInline):
model = ModelZero
fields = ('some', 'fields', 'field_2_2')
form = forms.ModelZeroForm
def field_2_2(self, obj):
return obj.mtm_field.through.field_2_2
这里的表格:
class ModelZeroForm(ModelForm):
class Meta:
widgets = {
"mtm_field.through.field_2_1": dal.autocomplete.ModelSelect2Multiple(
url="my-autocomplete-url"
)
}
这样我有两个错误:
- 无法在字段元组中添加自定义字段 (field_2_2)
- 未显示自定义小部件
有没有办法使用这种模型结构来实现这个目标?
解决方案
我没有使用旧 Django 版本的经验,但如果我没记错的话,管理界面中相关字段的语法将类似于 : mtm_field__field_2_2
。
推荐阅读
- sql - 为什么触发器“而不是删除”不是递归的?
- postgresql - 在 Postgres 中为两个表创建触发器
- javascript - 在Angular JS中将微调器添加到锚标记
- javascript - 使用 Puppeter 在类中选择一个 div
- python - 使用 Beautiful Soup 提取元素的 iframe 内容
- javascript - YouTube API 音量控制
- react-native - Transform 和 props.progess 在 react-native-web 上不起作用
- powershell - Red-Gate SQL Compare 和 Powershell 运行 CDC 脚本
- excel - Excel 条件正确大小写格式
- python - Python matplotlib 无法显示二值化图像