2017-01-27 10 views
0

Я настраиваю свои модели, и я стараюсь избегать использования отношений ManyToMany. У меня есть эта установка:Эффективное влияние обратных отношений в Django

  • Модель: Human
  • Некоторые люди (небольшой процент) должны иметь M2M отношения с другими людьми. Назовем это отношение «знает» (обратное отношение называется «is_known_by»).
  • Чтобы избежать установки ManyToManyField у людей, я сделал модель FamousHumans.
  • FamousHumans представляет собой особый класс человека и имеет OneToOneField (человек)
  • Они также имеют ManyToManyField (Humans), чтобы представлять «знает» отношения

Вот мой вопрос: Поскольку Django создает обратные отношения, я предполагаю, что у всех Людей будет обратное отношение «is_known_by» к FamousHumans, так что отношения M2M все еще существуют. Есть ли какое-либо преимущество в производительности для моей установки?

Набор данных будет довольно большим, и только несколько человек нуждаются в отношениях M2M. Моя главная забота - это производительность.

ответ

4

Это излишне сложно.

Нет накладных расходов на производительность при наличии отношений «многие ко многим». Это представлено промежуточной таблицей в базе данных; в таблице людей нет фактического поля. Если элемент не имеет каких-либо элементов m2m, данные не сохраняются.

+0

Спасибо. Я попробую упростить все – rwms