显示通过manymany字段传递的字段



我正在做一个用Python 2.7和Django 1.11开发的项目。
我试图在管理页面显示两个字段通过manymany字段。

模型如下:

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"
)
}

这样我有两个错误:

  1. 这是不可能添加自定义字段(field_2_2)在字段元组
  2. 自定义小部件未显示

是否有一种方法可以使用这个模型结构来实现这个目标?

我没有使用旧版本Django的经验,但是如果我没有弄错的话,在管理界面中相关字段的语法应该是这样的:mtm_field__field_2_2.

最新更新