Django - Как исключить поля родительского класса - PullRequest
1 голос
/ 20 марта 2012

У меня есть требование, в котором я хочу исключить все родительские поля, просто включить поля, явно определенные в 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 Ответ

3 голосов
/ 20 марта 2012

Возможно, вам удастся скрыться с помощью

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

Но, честно говоря, это ужасно, и я не могу понять, почему вы продлили сотрудника. Расширяя, сделайте OneToOneKey между двумя моделями. Кажется, вам нужен ForeignKey.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...