Django: Выяснение, в какой таблице в иерархии наследования есть поле

#django #inheritance #model #field

#django #наследование #Модель #поле

Вопрос:

Рассмотрим следующий пример:

 class Base(models.Model):
    myfield = models.CharField()
class Derived(Base):
    pass
  

Теперь базовый и производный классы будут иметь разные таблицы в базах данных.

Мой вопрос в том, как узнать, к какой таблице принадлежит myfield?

Комментарии:

1. Некоторые документы по Django, которые я нашел при поиске ответа: django-model-internals-reference.readthedocs.org/en/latest /…

Ответ №1:

Используйте _meta.get_fields_with_model() метод:

 for field, model in Derived._meta.get_fields_with_model():
    if field.name == 'myfield':
        model = model or Derived
        print 'myfield belongs to %s' % model._meta.db_table