Вы хотите использовать опцию «upload_to» в ImageField
#models.py
import os
def get_image_path(instance, filename):
return os.path.join('photos', str(instance.id), filename)
class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True)
profile_image = ImageField(upload_to=get_image_path, blank=True, null=True)
Это код непосредственно из моего проекта. Загруженное изображение отправляется в /MEDIA_ROOT/photos/
. Для того, что вы хотите, просто измените строку «photos» на «users» в def get_image_path
. под FileField подробно
class KeepDisplayOn
{
public:
KeepDisplayOn()
{
mPrevExecState = ::SetThreadExecutionState(ES_DISPLAY_REQUIRED | ES_SYSTEM_REQUIRED | ES_CONTINUOUS);
::SystemParametersInfo(SPI_GETSCREENSAVETIMEOUT, 0, &mPrevScreenSaver, 0);
::SystemParametersInfo(SPI_SETSCREENSAVETIMEOUT, FALSE, NULL, 0);
}
~KeepDisplayOn()
{
::SystemParametersInfo(SPI_SETSCREENSAVETIMEOUT, mPrevScreenSaver, NULL, 0);
::SetThreadExecutionState(mPrevExecState);
}
private:
UINT mPrevScreenSaver;
EXECUTION_STATE mPrevExecState;
};
Более простой способ, который не изменяет глобальное состояние системы, как это делает первый ответ:
В оконной процедуре добавьте обработчик для WM_SYSCOMMAND
. Когда wParam равно SC_MONITORPOWER
, вернуть 0 вместо того, чтобы откладывать на DefWindowProc
. (Если wParam - любое другое значение, убедитесь, что вы обрабатываете сообщение или передаете его DefWindowProc
. В противном случае пользователю будет сложно настроить ваше окно во время выполнения.)
SetThreadExecutionState(ES_DISPLAY_REQUIRED|ES_CONTINUOUS);