Python 如何从通过PolymorphicChildModelAdmin创建的表单中排除字段

Python 如何从通过PolymorphicChildModelAdmin创建的表单中排除字段,python,django,django-polymorphic,Python,Django,Django Polymorphic,使用多态插件和附加插件,我想知道如何防止一些基类字段显示在子管理接口的表单中。将此adminy.py用于我的孩子班级: from django.contrib import admin from .models import * from partsmanagement.models import Part from polymorphic.admin import PolymorphicParentModelAdmin, PolymorphicChildModelAdmin admin.si

使用多态插件和附加插件,我想知道如何防止一些基类字段显示在子管理接口的表单中。将此adminy.py用于我的孩子班级:

from django.contrib import admin
from .models import *
from partsmanagement.models import Part
from polymorphic.admin import PolymorphicParentModelAdmin, PolymorphicChildModelAdmin

admin.site.register(Book)

class BookAdmin(PolymorphicChildModelAdmin):
    base_model = Part
此admin.py用于基本模型:

# -*- coding: utf-8 -*-

from django.contrib import admin
from .models import *
from polymorphic.admin import PolymorphicParentModelAdmin, PolymorphicChildModelAdmin
from bookcollection.models import Book
from bookcollection.admin import BookAdmin

admin.site.register(Part)

class PartAdmin(PolymorphicParentModelAdmin):
    base_model = 'Part'
    child_models = (
        (Book, BookAdmin),
    )

现在,admin中的表单显示了基类和子类的所有文件。我试图为子类添加exclude=list(),但没有效果(没有更改)

类的过滤(相当于python的isinstance()):

>>> ModelA.objects.instance_of(ModelB)
.
[ <ModelB: id 2, field1 (CharField), field2 (CharField)>,
  <ModelC: id 3, field1 (CharField), field2 (CharField), field3 (CharField)> ]
您也可以在Q对象中使用此功能(与上面的结果相同):

多态筛选(用于派生类中的字段)

例如,cherrypicking从继承树中任意位置的多个派生类中选择对象,使用Q对象(语法为:精确模型名+三个uz+字段名):

>>ModelA.objects.filter(Q(modelboou字段2='B2')| Q(modelcoou字段3='C3'))
.
[ ,
]
组合查询集

QuerySet现在可以被视为允许聚合不同对象类型的对象容器,非常类似于python列表——只要对象是通过公共基类的管理器访问的:

>>> Base.objects.instance_of(ModelX) | Base.objects.instance_of(ModelY)
.
[ <ModelX: id 1, field_x (CharField)>,
  <ModelY: id 2, field_y (CharField)> ]
>>Base.objects.instance_of(ModelX)| Base.objects.instance_of(ModelY)
.
[ ,
]

恐怕这并不是在回答我的问题。如何在admin.pyIt中实现这一点正如github的评论所说,这可能是一个真正的bug
>>> ModelA.objects.filter( Q(instance_of=ModelB) )
>>> ModelA.objects.filter(  Q(ModelB___field2 = 'B2') | Q(ModelC___field3 = 'C3')  )
.
[ <ModelB: id 2, field1 (CharField), field2 (CharField)>,
  <ModelC: id 3, field1 (CharField), field2 (CharField), field3 (CharField)> ]
>>> Base.objects.instance_of(ModelX) | Base.objects.instance_of(ModelY)
.
[ <ModelX: id 1, field_x (CharField)>,
  <ModelY: id 2, field_y (CharField)> ]