Files
SecondBrain/.obsidian/workspace.json
T
2026-05-31 09:58:45 +03:00

313 lines
31 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"main": {
"id": "5324373015726ba8",
"type": "split",
"children": [
{
"id": "4334af5869448aa1",
"type": "tabs",
"children": [
{
"id": "6ee40f9ce4325b62",
"type": "leaf",
"pinned": true,
"state": {
"type": "markdown",
"state": {
"file": "90 Library/Programming/Web/Основы веб-разработки.md",
"mode": "preview",
"source": false,
"backlinks": false
},
"pinned": true,
"icon": "lucide-file",
"title": "Основы веб-разработки"
}
},
{
"id": "28d74d490ab22900",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "90 Library/Programming/Python/Django: Модели и ORM.md",
"mode": "source",
"source": false,
"backlinks": false
},
"icon": "lucide-file",
"title": "Django: Модели и ORM"
}
}
],
"currentTab": 1
}
],
"direction": "vertical"
},
"left": {
"id": "a9c2d5e65288011a",
"type": "split",
"children": [
{
"id": "383cca303cf4b57d",
"type": "tabs",
"children": [
{
"id": "27e6486165131cfa",
"type": "leaf",
"state": {
"type": "file-explorer",
"state": {
"sortOrder": "alphabetical",
"autoReveal": true
},
"icon": "lucide-folder-closed",
"title": "Files"
}
},
{
"id": "66079465678173e5",
"type": "leaf",
"state": {
"type": "search",
"state": {
"query": "tag:#gym",
"matchingCase": false,
"explainSearch": false,
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical"
},
"icon": "lucide-search",
"title": "Search"
}
},
{
"id": "c2541ce190da912e",
"type": "leaf",
"state": {
"type": "bookmarks",
"state": {},
"icon": "lucide-bookmark",
"title": "Bookmarks"
}
},
{
"id": "673ce6e6c09cfc9c",
"type": "leaf",
"state": {
"type": "tag",
"state": {
"sortOrder": "frequency",
"useHierarchy": true,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-tags",
"title": "Tags"
}
}
]
}
],
"direction": "horizontal",
"width": 233,
"collapsed": true
},
"right": {
"id": "38c591aa0966839e",
"type": "split",
"children": [
{
"id": "86a193b1d3159ff8",
"type": "tabs",
"children": [
{
"id": "06940eb960fc1db5",
"type": "leaf",
"pinned": true,
"state": {
"type": "terminal:terminal",
"state": {
"terminal:terminal": {
"cwd": "/home/ada/Documents/Vaults/SecondBrain",
"focus": false,
"profile": {
"args": [
"--login"
],
"executable": "/usr/bin/zsh",
"followTheme": true,
"name": "ZSH",
"platforms": {
"darwin": false,
"linux": true
},
"pythonExecutable": "python3",
"restoreHistory": true,
"rightClickAction": "copyPaste",
"successExitCodes": [
"0",
"SIGINT",
"SIGTERM"
],
"terminalOptions": {
"fontFamily": "FiraCode Nerd Font Mono",
"documentOverride": null
},
"type": "integrated",
"useWin32Conhost": false
},
"profileSourceId": "7004edff-76db-412f-95d3-5fd8e180d055",
"serial": {
"columns": 44,
"data": "\r\n\u001b[2m│ >_ \u001b[1;22mOpenAI Codex\u001b[22;2m (v0.135.0)\r\n│\r\n│\r\n│\r\n│ model: \u001b[0mgpt-5.5 medium\u001b[2m \u001b[36;22m/model\u001b[39;2m to\r\nchange │\r\n│ directory: \u001b[0m~/…/Vaults/SecondBrain\r\n\u001b[2m│\r\n╰───────────────────────────────────────────\r\n───╯\r\n\r\n\u001b[0m \u001b[1mTip:\u001b[0m Use /mcp to list configured MCP\r\n tools.\r\n\r\n\u001b[48;5;238m\u001b[44X\r\n\u001b[1;2m \u001b[22;22m\"90 Library/Programming/Python/Django:\u001b[4X\r\n Модели и ORM.md\" в типах полей пропиши\u001b[4X\r\n для каждого типа маленькое пояснение\u001b[6X\r\n\u001b[44X\r\n\u001b[0m\r\n\u001b[2m• \u001b[0mПлан: прочитаю заметку и шаблон/соседний\r\n стиль, затем точечно допишу короткие\r\n пояснения в разделе типов полей без\r\n изменения остальной структуры.\r\n\r\n\u001b[2m•\u001b[0m \u001b[1mExplored\r\n\u001b[22;2m └ \u001b[36;22mRead\u001b[0m INDEX.md\u001b[2m, \u001b[0mDjango: Модели и ORM.md\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m grep\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mn\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"типы полей|Field|\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22mCharField|TextField|IntegerField\"\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'90\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22mLibrary/Programming'\r\n\u001b[39;2m └ 11 matches in 1F:\r\n … +20 lines (ctrl + t to view\r\n transcript)\r\n\u001b[0m \u001b[2mLookups)\r\n\r\n\r\n────────────────────────────────────────────\r\n\r\n• \u001b[0mНашёл нужный раздел: сейчас типы полей\r\n перечислены группами, у \u001b[36mAutoField\r\n\u001b[0m пояснение пустое. Внесу только короткие\r\n пояснения и переведу статус заметки в\r\n \u001b[36mprocessing\u001b[0m, потому что файл редактируется.\r\n\r\n\u001b[2m• \u001b[1;22mEdited\u001b[0m 90 Library/Programming/Python/\r\nDjango: Модели и ORM.md (\u001b[32m+12\u001b[0m \u001b[31m-6\u001b[0m)\r\n \u001b[2m 1 \u001b[0m \u001b[38;2;147;153;178m---\r\n\u001b[39;48;5;52m \u001b[2m 2 \u001b[31;22m-\u001b[38;2;205;214;244;2mstatus: seed\u001b[24X\r\n\u001b[39;48;5;22;22m \u001b[2m 2 \u001b[32;22m+\u001b[38;2;205;214;244mstatus: processing\u001b[18X\r\n\u001b[0m \u001b[2m 3 \u001b[0m \u001b[38;2;205;214;244mtype: concept\u001b[23X\r\n\u001b[0m \u001b[2m ⋮\r\n\u001b[0m \u001b[2m35 \u001b[0m \u001b[38;2;147;153;178m###\u001b[38;2;249;226;175m \u001b[38;2;148;226;213mТипы полей\r\n\u001b[39;48;5;52m \u001b[2m36 \u001b[31;22m-\u001b[38;2;147;153;178;2m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mAutoField\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m -\u001b[21X\r\n\u001b[39;22m \u001b[2m37 \u001b[31;22m-\u001b[38;2;147;153;178;2m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mCharField(max_length=N)\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m, \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mTextFi\r\n\u001b[39;22m \u001b[2m \u001b[38;2;205;214;244meld\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m.\r\n\u001b[39;22m \u001b[2m38 \u001b[31;22m-\u001b[38;2;147;153;178;2m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mIntegerField\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m, \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mDecimalField(max_\r\n\u001b[39;22m \u001b[2m \u001b[38;2;205;214;244mdigits, decimal_places)\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m.\r\n\u001b[39;22m \u001b[2m39 \u001b[31;22m-\u001b[38;2;147;153;178;2m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mBooleanField\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m, \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mDateField\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m, \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mDate\r\n\u001b[39;22m \u001b[2m \u001b[38;2;205;214;244mTimeField\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m.\r\n\u001b[39;22m \u001b[2m40 \u001b[31;22m-\u001b[38;2;147;153;178;2m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mEmailField\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m, \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mFileField\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m, \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mImageF\r\n\u001b[39;22m \u001b[2m \u001b[38;2;205;214;244mield\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m.\r\n\u001b[39;48;5;22;22m \u001b[2m36 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mAutoField\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m — автоинкрементный чис\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mловой первичный ключ.\r\n\u001b[39m \u001b[2m37 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mCharField(max_length=N)\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m — коротк\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mая строка фиксированной максимальной\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22m длины.\r\n\u001b[39m \u001b[2m38 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mTextField\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m — длинный текст без об\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mязательного ограничения длины.\r\n\u001b[39m \u001b[2m39 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mIntegerField\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m — целое число.\r\n\u001b[39m \u001b[2m40 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mDecimalField(max_digits, decimal_\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mие \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mTrue\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m/\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mFalse\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m.\r\n\u001b[39m \u001b[2m42 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mDateField\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m — дата без времени.\r\n\u001b[39m \u001b[2m43 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mDateTimeField\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m — дата и время.\r\n\u001b[39m \u001b[2m44 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mEmailField\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m — строка с валидацией\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22m email-адреса.\r\n\u001b[39m \u001b[2m45 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mFileField\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m — путь к загруженному\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mфайлу.\r\n\u001b[39m \u001b[2m46 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mImageField\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m — файл изображения с\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mдополнительной проверкой формата.\r\n\u001b[0m \u001b[2m47\u001b[38X\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m grep\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mn\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"Django: Модели и ORM|\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22mDjango Модели\"\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'99 System/INDEX.md'\r\n\u001b[39;2m └ 1 matches in 1F:\r\n\r\n … +3 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2mbackend, or...\r\n\r\n• \u001b[0mТак как изменился frontmatter, обновляю\r\n соответствующую строку в индексе, без\r\n полной регенерации всего файла.\r\n\r\n\u001b[2m•\u001b[0m \u001b[1mExplored\r\n\u001b[22;2m └ \u001b[36;22mRead\u001b[0m INDEX.md\r\n\r\n\u001b[2m• \u001b[1;22mEdited\u001b[0m 99 System/INDEX.md (\u001b[32m+1\u001b[0m \u001b[31m-1\u001b[0m)\r\n \u001b[2m523 \u001b[0m \u001b[38;2;147;153;178m|\u001b[38;2;205;214;244m---------\u001b[38;2;147;153;178m|\u001b[38;2;205;214;244m-------\u001b[38;2;147;153;178m|\u001b[38;2;205;214;244m--------\u001b[38;2;147;153;178m|\u001b[38;2;205;214;244m------\u001b[38;2;147;153;178m|\r\n\u001b[0m \u001b[2m \u001b[38;2;205;214;244;22m------\u001b[38;2;147;153;178m|\r\n\u001b[39;48;5;52m \u001b[2m524 \u001b[31;22m-\u001b[38;2;147;153;178;2m|\u001b[38;2;205;214;244m [[Django\u001b[38;2;147;153;178m:\u001b[38;2;205;214;244m Модели и ORM]] \u001b[38;2;147;153;178m|\u001b[38;2;205;214;244m Django\r\n\u001b[39;22m \u001b[2m \u001b[38;2;147;153;178m:\u001b[38;2;205;214;244m Модели и ORM \u001b[38;2;147;153;178m|\u001b[38;2;205;214;244m seed \u001b[38;2;147;153;178m|\u001b[38;2;205;214;244m concept \u001b[38;2;147;153;178m|\u001b[38;2;205;214;244m [\r\n\u001b[39;22m \u001b[2m \u001b[38;2;205;214;244mdjango, backend, orm, database, mig\r\n\u001b[39;22m \u001b[2m \u001b[38;2;205;214;244mrations] \u001b[38;2;147;153;178m|\r\n\u001b[39;48;5;22;22m \u001b[2m524 \u001b[32;22m+\u001b[38;2;147;153;178m|\u001b[38;2;205;214;244m [[Django: Модели и ORM]] \u001b[38;2;147;153;178m|\u001b[38;2;205;214;244m Django\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22m: Модели и ORM \u001b[38;2;147;153;178m|\u001b[38;2;205;214;244m processing \u001b[38;2;147;153;178m|\u001b[38;2;205;214;244m conce\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mpt \u001b[38;2;147;153;178m|\u001b[38;2;205;214;244m [django, backend, orm, databas\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22me, migrations] \u001b[38;2;147;153;178m|\r\n\u001b[0m \u001b[2m525 \u001b[0m \u001b[38;2;147;153;178m|\u001b[38;2;205;214;244m [[Django: Представления, шаблоны\u001b[1X\r\n\u001b[0m \u001b[2m \u001b[38;2;205;214;244;22mблоны и CBV \u001b[38;2;147;153;178m|\u001b[38;2;205;214;244m seed \u001b[38;2;147;153;178m|\u001b[38;2;205;214;244m concept \u001b[38;2;147;153;178m|\u001b[38;2;205;214;244m [dja\r\n\u001b[0m \u001b[2m \u001b[38;2;205;214;244;22mngo, routing, templates, cbv, fbv]\r\n\u001b[0m \u001b[2m \u001b[38;2;147;153;178;22m|\r\n\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m git diff\u001b[38;2;148;226;213m --\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'90 Library/\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22mProgramming/Python/Django: Модели и\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22mORM.md'\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'99 System/INDEX.md'\r\n\u001b[39;2m └ .../Programming/Python/Django: Модели и\r\n\u001b[0m \u001b[2m +1 -1\r\n\r\n────────────────────────────────────────────\r\n\r\n• \u001b[0mГотово.\r\n\r\n В \u001b[36m90 Library/Programming/Python/Django:\r\n\u001b[0m \u001b[36mМодели и ORM.md:35\u001b[0m в разделе «Типы полей»\r\n добавил короткое пояснение для каждого\r\n типа поля. Статус заметки перевёл в\r\n \u001b[36mprocessing\u001b[0m и обновил строку в \u001b[36m99 System/\r\n\u001b[0m \u001b[36mINDEX.md:524\u001b[0m.\r\n\r\n\u001b[2m────────────────────────────────────────────\r\n\r\n\u001b[48;5;238;22m\u001b[44X\r\n\u001b[1;2m \u001b[22;22mотношения тоже распиши, касательно,\r\n `on_delete'\r\n\r\n\u001b[0m\u001b[44X\r\n\u001b[2m• \u001b[0mПлан: расширю только блок «Отношения»:\r\n коротко поясню каждый тип связи и распишу\r\n варианты \u001b[36mon_delete\u001b[0m без затрагивания\r\n остальных разделов.\r\n\r\n\u001b[2m•\u001b[0m \u001b[1mExplored\r\n\u001b[22;2m └ \u001b[36;22mRead\u001b[0m Django: Модели и ORM.md\r\n\r\n\u001b[2m────────────────────────────────────────────\r\n\r\n• \u001b[0mРедактирую этот небольшой блок: оставляю\r\n формат списка, добавляю смысл \u001b[36mon_delete\u001b[0m и\r\n отмечаю, что для \u001b[36mSET_NULL\u001b[0m нужно \u001b[36mnull=True\u001b[0m,\r\n а для \u001b[36mSET_DEFAULT\u001b[0m нужен \u001b[36mdefault\u001b[0m.\r\n\r\n\u001b[2m• \u001b[1;22mEdited\u001b[0m 90 Library/Programming/Python/\r\nDjango: Модели и ORM.md (\u001b[32m+10\u001b[0m \u001b[31m-4\u001b[0m)\r\n \u001b[2m48 \u001b[0m \u001b[38;2;147;153;178m###\u001b[38;2;249;226;175m \u001b[38;2;148;226;213mОтношения\r\n\u001b[39;48;5;52m \u001b[2m49 \u001b[31;22m-\u001b[38;2;147;153;178;2m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mForeignKey(Target, on_delete=mode\r\n\u001b[39;22m \u001b[2m \u001b[38;2;205;214;244mls.CASCADE)\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m — Один ко многим.\r\n\u001b[39;22m \u001b[2m50 \u001b[31;22m-\u001b[38;2;147;153;178;2m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mOneToOneField(Target, on_delete=m\r\n\u001b[39;22m \u001b[2m \u001b[38;2;205;214;244models.CASCADE)\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m — Один к одному.\r\n\u001b[39;22m \u001b[2m51 \u001b[31;22m-\u001b[38;2;147;153;178;2m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mManyToManyField(Target)\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m — Многие\r\n\u001b[39;22m \u001b[2m \u001b[38;2;205;214;244m ко многим.\r\n\u001b[39;22m \u001b[2m52 \u001b[31;22m-\u001b[38;2;147;153;178;2m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m**\u001b[38;2;243;139;168;1mon_delete:\u001b[38;2;147;153;178;22m**\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mCASCADE\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m, \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mPROTECT\r\n\u001b[39;22m \u001b[2m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m, \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mSET_NULL\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m, \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mSET_DEFAULT\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m, \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mDO_NO\r\n\u001b[39;22m \u001b[2m \u001b[38;2;205;214;244mTHING\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m.\r\n\u001b[39;48;5;22;22m \u001b[2m49 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mForeignKey(Target, on_delete=...)\r\n\u001b[39m \u001b[2m \u001b[38;2;147;153;178;22m`\u001b[38;2;205;214;244m — связь «один ко многим»: у одной\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mзаписи \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mTarget\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m может быть много свя\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mзанных записей текущей модели.\r\n\u001b[39m \u001b[2m50 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mOneToOneField(Target, on_delete=.\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22m..)\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m — связь «один к одному»: каждой\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22m записи соответствует максимум одна\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mсвязанная запись.\r\n\u001b[39m \u001b[2m51 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mManyToManyField(Target)\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m — связь\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22m«многие ко многим»: записи обеих мод\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mелей могут ссылаться на несколько за\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mписей другой модели.\r\n\u001b[39m \u001b[2m52 \u001b[32;22m+\r\n\u001b[39m \u001b[2m53 \u001b[32;22m+\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mon_delete\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m задаёт, что делать с тек\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mущей записью, если удаляется связанн\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mая запись \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mTarget\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m:\r\n\u001b[39m \u001b[2m54 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mCASCADE\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m — удалить текущую запись\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22m вместе со связанной.\r\n\u001b[39m \u001b[2m55 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mPROTECT\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m — запретить удаление свя\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mзанной записи, пока на неё есть ссыл\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mки.\r\n\u001b[39m \u001b[2m56 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mSET_NULL\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m — записать \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mNULL\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m в пол\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mе связи; требует \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mnull=True\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m.\r\n\u001b[39m \u001b[2m57 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mSET_DEFAULT\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m — записать значение\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mпо умолчанию; требует \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mdefault\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m.\r\n\u001b[39m \u001b[2m58 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mDO_NOTHING\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m — ничего не делать на\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22m уровне Django, ответственность оста\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mётся на БД и разработчике.\r\n\u001b[0m \u001b[2m59\u001b[38X\r\n\r\n◦\u001b[1CWorking\u001b[1C(22s • esc to interrupt)\r\n\r\n\u001b[48;5;238;22m \u001b[43X\r\n\u001b[1m\u001b[22m \u001b[2mSummarize recent commits\r\n\u001b[22m \r\n\u001b[0m\u001b[2X\u001b[2C\u001b[38;2;246;226;183mgpt-5.5 medium\u001b[39;2m · \u001b[38;2;171;223;167;22m~/Documents/Vaults/Secon…\u001b[2A\u001b[42D\u001b[0m",
"rows": 34,
"scrollLine": -1
}
}
},
"pinned": true,
"icon": "terminal",
"title": "Terminal: ⠹ SecondBrain"
}
},
{
"id": "394fb6e28d09b8f3",
"type": "leaf",
"state": {
"type": "all-properties",
"state": {
"sortOrder": "frequency",
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-archive",
"title": "All properties"
}
},
{
"id": "e51be669e29cd994",
"type": "leaf",
"state": {
"type": "backlink",
"state": {
"file": "90 Library/Programming/Web/Основы HTML (структура, таблицы, формы).md",
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
"showSearch": false,
"searchQuery": "",
"backlinkCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-coming-in",
"title": "Backlinks for Основы HTML (структура, таблицы, формы)"
}
},
{
"id": "86ea4ddeaafff092",
"type": "leaf",
"state": {
"type": "outgoing-link",
"state": {
"file": "90 Library/Programming/Ruby On Rails/Sidekiq - основа работы.md",
"linksCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-going-out",
"title": "Outgoing links from Sidekiq - основа работы"
}
},
{
"id": "a0ffd3bace615787",
"type": "leaf",
"state": {
"type": "outline",
"state": {
"file": "90 Library/Programming/Web/Основы HTML (структура, таблицы, формы).md",
"followCursor": false,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-list",
"title": "Outline of Основы HTML (структура, таблицы, формы)"
}
}
]
}
],
"direction": "horizontal",
"width": 446
},
"left-ribbon": {
"hiddenItems": {
"switcher:Open quick switcher": false,
"graph:Open graph view": false,
"canvas:Create new canvas": false,
"daily-notes:Open today's daily note": false,
"templates:Insert template": false,
"command-palette:Open command palette": false,
"markdown-importer:Open format converter": false,
"random-note:Open random note": false,
"audio-recorder:Start/stop recording": false,
"bases:Create new base": false,
"omnisearch:Omnisearch": false,
"templater-obsidian:Templater": false,
"obsidian-git:Open Git source control": false,
"obsidian-excalidraw-plugin:New drawing": false,
"terminal:Open terminal": false
}
},
"active": "06940eb960fc1db5",
"lastOpenFiles": [
"90 Library/Programming/Python/Django: Модели и ORM.md",
"90 Library/Programming/Python/Курс по Python и Django.md",
"90 Library/Programming/Web/CSS: Адаптивность, Flexbox и Grid.md",
"90 Library/Programming/Web/Основы веб-разработки.md",
"90 Library/Programming/Web/Основы HTML (структура, таблицы, формы).md",
"AGENTS.md",
"90 Library/Programming/Web/CSS: Основы, селекторы и блочная модель.md",
"CODEX.md",
"GEMINI.md",
"CLAUDE.md",
"90 Library/Finance/Инвестиции/Антихрупкость как управляемая асимметрия.md",
"90 Library/Finance/Инвестиции/Антихрупкость.md",
"90 Library/Finance/Инвестиции/Заметки в инвестировании.md",
"99 System/Archive/04 Tools/🛠️ Неоконченные заметки.md",
"99 System/Archive/04 Tools/StudyTracker/StudyTracker.md",
"99 System/Archive/04 Tools/StudyTracker/Books/Books.md",
"99 System/Archive/04 Tools/StudyTracker/Courses/Courses.md",
"90 Library/Networking/Основы сетевых технологий.md",
"90 Library/Machine Learning/Data Science с нуля.md",
"90 Library/DevOps/Курс по DevOps от Merion.md",
"90 Library/Networking/Компьютерные сети.md",
"90 Library/Machine Learning/Грокаем Глубокое Обучение.md",
"90 Library/Finance/Инвестиции/Рискуя собственной шкурой.md",
"90 Library/Finance/Инвестиции/Психология денег.md",
"90 Library/Finance/Инвестиции/Черный лебедь.md",
"90 Library/Finance/Инвестиции/На пенсию в 35.md",
"99 System/Archive/04 Tools/StudyTracker/Courses",
"99 System/Archive/04 Tools/StudyTracker/Books",
"99 System/Archive/04 Tools/StudyTracker",
"99 System/Archive/04 Tools",
"99 System/Archive/SocialBase/04 Другие",
"99 System/Archive/SocialBase/03 Коллеги",
"99 System/Archive/SocialBase/02 Друзья",
"99 System/Archive/SocialBase/01 Семья",
"99 System/Archive/SocialBase",
"90 Library/Programming/Ruby",
"99 System/Cache/Pasted image 20260526204029.png",
"99 System/Cache/Pasted image 20260526203848.png",
"99 System/Cache/Pasted image 20260526203807.png",
"99 System/Cache/Pasted image 20260521134256.png",
"99 System/Cache/Pasted image 20260521134238.png",
"99 System/Cache/Pasted image 20260521134228.png",
"99 System/Cache/Pasted image 20260521134207.png",
"99 System/Cache/Pasted image 20260521133832.png",
"99 System/Cache/Pasted image 20260521133824.png",
"99 System/Cache/Pasted image 20260521133344.png",
"00 Inbox/Untitled.canvas"
]
}