Конструктор устанавливает ненулевое значение? Если это так, я бы просто выбросил ArgumentNullException
из сеттера.
Если ваша зависимость связана с внешними ключами, ссылающимися на модели в других приложениях, вам не требуется чтобы импортировать другую модель. Вы можете использовать строку в своем определении ForeignKey:
class MyModel(models.Model):
myfield = models.ForeignKey('myotherapp.MyOtherModel')
Таким образом, нет необходимости импортировать MyOtherModel, поэтому нет циклической ссылки. Django разрешает строку внутренне, и все работает, как ожидалось.
Если вы видите зависимость круговой модели, я предполагаю, что одна из трех вещей происходит:
Возможно, вы могли бы показать нам, что происходит в этих моделях, и мы могли бы попытаться выяснить, почему возникает проблема. Зависимость круговой модели редко является признаком того, что вам нужно объединить два приложения - более вероятно (хотя и не определенно), что есть проблема с одним из ваших определений модели.
ps Я работаю над похожим приложением django, но моя структура приложения, вероятно, сильно отличается от вашей. Я буду рад дать вам подробное описание, если вам интересно.
Обычно я выступаю за разделение функциональности на более мелкие приложения, но круговая зависимость между моделями отражает такую тесную интеграцию, что вы, вероятно, не сильно выиграете от разделения и можете просто подумать о слиянии приложений. Если это приводит к тому, что приложение кажется слишком большим, возможно, есть способ выполнить разделение по другой оси, что приведет к более разумному графику зависимостей.