Разница между import appname.models и from appname.models.ModelName в Djano
Как стиль программирования, я считаю более полезным писать следующее:
import appname.models
obj = appname.models.ModelName.objects.filter(status=1)
Однако, я нахожу много кода, где только ModelName импортируется:
from appname.models import ModelName
obj = ModelName.objects.filter(status=1)
Однако я часто сталкиваюсь со сценарием, когда изменение в ModelName приводит к поломке приложения и нам приходится вносить изменения повсюду.
Кроме того, с точки зрения читабельности, при втором подходе мне очень трудно понять, где была определена модель (в каком приложении).
Я настаивал на том, чтобы моя команда выбрала первый подход. Хотелось бы услышать ваши мысли о том, какой подход является лучшим с точки зрения следующих аспектов:
- Readability
- Scalability
- Performance
Я очень ценю все ваши мысли здесь.
from appname.models import ModelName
Я предпочитаю этот вариант, потому что этот способ более четко рассказывает нам о модели и о том, из каких приложений она происходит. Когда вы работаете над большим проектом, используя api или Thiry party apps и много импортируемых моделей или других party apps, так что трудно найти модели или некоторые другие вещи. Короче говоря, я предпочитаю этот способ
import appname.models
Этот метод не является предпочтительным. Потому что он ничего не добавляет к кодовой базе. Вам придется использовать
appname.modelsснова и снова. Качество кода будет ухудшено, а время загрузки увеличится в больших приложениях.from appname.models import ModelNameХотя этот подход является более правильным и эффективным. Вы импортируете модель Specified только один раз и будете использовать ее снова и снова. Этот подход экономит память и время загрузки.