У меня есть приложение Django, где я хочу использовать набор абстрактных базовых классов для определения определенных моделей. Я хочу подключить некоторые из этих абстрактных моделей через внешние ключи.
Я знаю, что Django не позволяет models.ForeignKey для абстрактных моделей. Я провел некоторый поиск в StackOverflow, и общее решение, похоже, заключается в использовании GenericForeignKey . Однако, насколько я понимаю, это приводит к дополнительному вызову на уровне базы данных SELECT . Я хочу избежать этого, потому что довольно много моих абстрактных моделей имеют такие отношения. Пример приведен ниже:
class Person (models.Model):
name = models.CharField (max_length=256)
class Meta:
abstract = True
class Phone (models.Model):
phone_no = models.BigIntegerField ()
owner = models.ForeignKey (Person) # This is, of course, wrong. I'd like something like this.
class Meta:
abstract = True
Помимо сообщений о GenericForeignKey, я также натолкнулся на сообщение о создании моделей Dynami c. Ссылка приведена ниже. Постер-вопросник сам дал ответ.
Определение абстрактной модели с помощью ForeignKey для другой абстрактной модели
Я хотел бы спросить:
- , если это все еще верно для текущих версий Django,
- , если есть какие-то предупреждения, о которых я должен знать, и
- , если есть, возможно, более современное решение?
Спасибо.