Django-如何排除父类的字段

时间:2012-03-20 09:26:06

标签: python django

我有一个要求,我想要排除所有父字段,只包括在child中明确定义的字段。

为简洁起见,这是我的django代码:

#app2 models.py
class EmployeeExtended(app1.Employee):
    boss = models.ForeignKey(User, null=True, blank=True)

#app1 admin.py
class EmployeeExtendedInline(admin.StackedInline):
    model = app2.EmployeeExtended
    fields = ['boss']

class EmployeeAdmin(admin.ModelAdmin):
    inlines = [EmployeeExtendedInline]

此代码正常运行。如果我不给fields,它也将包括所有父字段。但我不想明确写fields=['boss']。相反,我想要像:

for field in EmployeeExtendedOnly_Not_In_Its_Parent:
    fields.append(field)

请为EmployeeExtendedOnly_Not_In_Its_Parent

建议代码

1 个答案:

答案 0 :(得分:3)

你可能能够逃脱

fields = [f.name for f in app1.EmployeeExtended._meta._fields() if f not in app1.Employee._meta._fields()]

但是,说实话,这很难看,我不明白为什么你扩展了员工。扩展在两个模型之间制作OneToOneKey。看来你需要的是一个ForeignKey。