Цикл зависимости приложений Django

Конструктор устанавливает ненулевое значение? Если это так, я бы просто выбросил ArgumentNullException из сеттера.

24
задан Rob Golding 21 May 2009 в 22:05
поделиться

3 ответа

Если ваша зависимость связана с внешними ключами, ссылающимися на модели в других приложениях, вам не требуется чтобы импортировать другую модель. Вы можете использовать строку в своем определении ForeignKey:

class MyModel(models.Model):
    myfield = models.ForeignKey('myotherapp.MyOtherModel')

Таким образом, нет необходимости импортировать MyOtherModel, поэтому нет циклической ссылки. Django разрешает строку внутренне, и все работает, как ожидалось.

56
ответ дан 28 November 2019 в 22:40
поделиться

Если вы видите зависимость круговой модели, я предполагаю, что одна из трех вещей происходит:

  • Вы определили обратное отношение к уже определенному (например, в обоих курсах много лекций, а в лекции - один курс), что является избыточным в django
  • У вас есть метод модели в неправильном приложении
  • Вы предоставляете функциональные возможности в методе модели, который должен быть в менеджере

Возможно, вы могли бы показать нам, что происходит в этих моделях, и мы могли бы попытаться выяснить, почему возникает проблема. Зависимость круговой модели редко является признаком того, что вам нужно объединить два приложения - более вероятно (хотя и не определенно), что есть проблема с одним из ваших определений модели.

ps Я работаю над похожим приложением django, но моя структура приложения, вероятно, сильно отличается от вашей. Я буду рад дать вам подробное описание, если вам интересно.

3
ответ дан 28 November 2019 в 22:40
поделиться

Обычно я выступаю за разделение функциональности на более мелкие приложения, но круговая зависимость между моделями отражает такую ​​тесную интеграцию, что вы, вероятно, не сильно выиграете от разделения и можете просто подумать о слиянии приложений. Если это приводит к тому, что приложение кажется слишком большим, возможно, есть способ выполнить разделение по другой оси, что приведет к более разумному графику зависимостей.

1
ответ дан 28 November 2019 в 22:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: