Django fake model instanciation - No testunit [duplicate]
Я хочу знать, могу ли я создать пустую поддельную модель только с id
записью базы данных.
Я нашел способ создания макета модели, но мне нужно решение, удобное для производства.
Объяснение моей проблемы :
Я хочу перечислить настройки пользователей, которые выбрали отображение в публичном режиме :
user_displayed_list = UserPublicProfile.objects.filter(
displayed = True,
).only(
'user_id',
'is_premium',
)
user_settings_list = []
for user_displayed in user_displayed_list:
# I have to send user Instance to the next method :
user_settings = self.get_user_settings(user_displayed.user)
user_settings_list.append(user_settings)
# But ’user_displayed.user’ run an new SQL query
Я знаю, что могу улучшить свой кверисет как :
user_displayed_list = UserPublicProfile.objects.filter(
displayed = True,
).select_related(
'user'
).only(
'user',
'is_premium',
)
Но это делает бесполезное соединение, потому что мне нужно только поле пользователя id
в get_user_settings()
:
Метод get_user_settings()
(это может помочь понять контекст):
def get_user_settings(self, user)
user_settings = UserSettings.objects.get(user = user)
return user_settings
В реальном проекте этот метод выполняет больше функций для бизнеса
Есть ли способ создать экземпляр модели User с заполненным только id
полем?
Я не хочу использовать пользовательский пустой класс, созданный для этой цели. Мне действительно нужен объект User.
Я не нашел ничего для этого. Если это возможно, то я мог бы использовать его таким образом :
for user_displayed in user_displayed_list:
FakeUser = User.objects.create_fake(id = user_displayed.user_id)
# I have to send user Instance to the next method :
user_settings = self.get_user_settings(FakeUser)