LG K41S характеристики, обзор, отзывы, дата выхода
Традиционно в преддверии премьеры своих новых флагманских моделей компания LG представляет несколько более скромных устройств. Среди них в 2020 году — LG K41s, который появился на свет вместе со своими аналогами LG K61 и LG K51s. Из его особенностей на данном этапе стоит отметить серьезную защиту устройства от падений и экстремальных температур, поддержку сетей 5G и технологии X 3D Surround Sound.
Дизайн
LG K41s визуально отличается тем, что его фронтальная камера расположена в прорези каплевидной формы. За ним скрывается 8-мегапиксельный объектив. Впечатляет, что корпус защищен по стандарту MIL-STD-810G. Это означает, что LG K41s не боится падений, вибраций и может выжить в экстремальных условиях.
Смартфон удобно ложится в ладонь пользователя. Передняя панель покрыта стеклом Corning Gorilla Glass.
Производитель постарался предложить выбор цветовой гаммы — LG K41s можно приобрести с корпусом в сером, черном или белом цвете.
Отображать
В смартфоне 6,5-дюймовый экран с разрешением HD + и ЖК-матрицей. Он достаточно большой и имеет современное соотношение сторон 20: 9, что дает ему преимущество в том, что он очень удобен для различного контента.
Матрица в сочетании с разрешением 720 x 1600 может быть устаревшим решением, но не превалирует над общей положительной оценкой. Цветопередача хорошая, с отличными углами обзора и запасом по уровню яркости. Плотность пикселей на дюйм составляет около 270, что является типичным показателем для смартфонов такого типа.
Продуктивность
В основе смартфона лежит 8-ядерная однокристальная система с тактовой частотой 2 ГГц, которая дополняется 3 ГБ оперативной памяти. Хранилище скромное — всего 32 ГБ. Пользователь имеет возможность использовать карту памяти максимальной емкостью 2 ТБ. Таким образом, вам не придется беспокоиться о том, что негде хранить сотни видео и фотографий с отпусков и поездок. Графика предоставлена PowerVR GE8320.
Выбор процессора и памяти — минимально допустимый для удобного использования различных приложений и игр. Чипсет спроектирован таким образом, что система искусственного интеллекта улучшает качество фотографий.
LG K41s поставляется с операционной системой Android 9 Pie. Работать с ним легко и интуитивно понятно.
Камеры
Основная камера LG K41s четырехместная. Основной модуль 13-мегапиксельный и дополнен 5-мегапиксельной сверхширокоугольной камерой, 2-мегапиксельным объективом для макросъемки и 2-мегапиксельным датчиком глубины. К ним была добавлена светодиодная вспышка, чтобы вы могли делать лучшие снимки.
Селфи-камера — одиночная, 8-мегапиксельная. Обе камеры позволяют записывать видео с разрешением 1080 пикселей со скоростью 30 кадров в секунду.
В результате пользователь получает возможность делать интересные, яркие и захватывающие кадры. Макрофотосенсор позволяет исследовать незнакомые детали окружающей среды. Тогда вы сможете анимировать одним касанием и получить настоящую живую фотографию.
С помощью искусственного интеллекта LG улучшила фото-возможности LG K41s. Распознавание сцен происходит быстрее и точнее. Вы можете выбрать нужные настройки и режимы в приложении камеры. Будь то съемка человека, вечеринки, весенних панорам, тропических пляжей или чего-то еще, результат будет впечатляющим.
Автономная работа
В LG K41s установлен аккумулятор емкостью 4000 мАч, а это значит, что у вас будет независимость от сети как минимум на 24 часа. Смотрите видео, играйте в игры и фотографируйте до изнеможения. В режиме ожидания аккумулятор будет заряжаться до 100 часов. При непрерывных звонках вы можете достать зарядное устройство через 8 часов.
Заключение
Ко всему, что было сказано до сих пор, мы должны добавить, что в LG K41s есть продвинутый Google Assistant, с помощью которого вы можете облегчить свои повседневные задачи. Также доступен чип NFC для бесконтактных платежей. Сканер отпечатков пальцев, который работает безотказно, дополняет положительную оценку смартфона.
Таким образом, LG K41s становится конкурентоспособной моделью на рынке, способной предложить вам отличный набор функций по доступной цене. Вы получаете достаточно большой экран, защиту в соответствии с установленными стандартами, набор из 5 камер, отличную автономную работу и современное видение.
Кроме того, смартфон поддерживает 2 SIM-карты, использование карты памяти и звуковую систему продвинутого качества. Устойчивое к царапинам стекло позволяет дольше, чем обычно, наслаждаться безупречным внешним видом LG K41s.
Сравнение 19 смартфонов LG из линеек G, Q, K и X
Смартфоны бренда LG заполонили европейский рынок. Экземпляры из разных серий сменяют друг друга и в этом буквенном круговороте легко потеряться неискушенному покупателю. В чем же особенность каждой линейки LG, чем отличаются гаджеты и какому смартфону в итоге отдать предпочтение?
В обзоре представлено 19 топовых девайсов из 4 серий. Подробное сравнение этих телефонов LG поможет определиться с личными предпочтениями и выбрать действительно стоящий вариант.
Читайте также: ТОП-10 лучших производителей смартфонов — рейтинг 2017 года
Серия LG G
В недалеком 2012 году бренд из Кореи презентовал свой первый флагман LG Optimus G. Правда, приставка Optimus исчезла очень быстро и все остальные смартфоны серии носили только букву G.
Далее последовали LG G2, G3 (2014 год), G4 (2015 год), G5 (2016 год) и G6 (2017 год). В 2018 компания готовит новую модель G7 ThinQ и релиз ее ожидается совсем скоро. Для наглядности картины стоит рассмотреть каждый девайс в отдельности, с учетом функционала и внешнего вида.
LG Optimus G
Первый смартфон линейки был оформлен в стеклянный корпус, задняя блестящая крышка добавляла модели элегантности. Кнопки были расположены стандартно, сбоку и внизу экрана.
Optimus привлек внимание своим внешним дизайном и функционалом:
- Дисплей здесь умопомрачительной яркости, как для 2012 года. Размер 4,7″, четкие углы обзора, контрастность и реальность передачи красок.
- Камера 13 Мп, которая выдавала четкие фото, независимо от условий освещенности. Фронтальный модуль — 1,3 Мп, видео записывал в HD разрешении.
Смартфон LG был оборудован производительным процессором и таким же видеочипом. Благодаря этому, модель на «ура» запускала тяжелые игры и другой контент. Компания выпустила также расширенную версию устройства под названием LG Optimus G Pro, что имела такой же функционал, но увеличенный до 5″ экран.
LG G2
Спереди смартфон LG G2 «венчал» 5,2-дюймовый дисплей с минимальными рамками по бокам и защитным стеклом на поверхности. Цвета экрана для того момента были очень яркими, а углы обзора поражали четкостью и детализированным изображением.
В списке достоинств:
- «гостевой режим», который помогал определить список приложений, что будут доступны посторонним пользователям, взявшим в руки телефон;
- встроенный пульт управления телевизором;
- многозадачность, позволяющая вывести на дисплей работающее приложение, например, страницу в соцсетях или видеоролик.
У этой модели была хорошая камера на 13 Мп с непривычной на тот момент лазерной фокусировкой и современной оптикой.
Читайте также: Лучшие смартфоны для селфи: рейтинг 10 первоклассных моделей
LG G3
Смартфон внешне не особо отличался от своих предыдущих «собратьев». Пластиковый глянцевый корпус имитировал металл, но на нем оставались отпечатки пальцев. Как и предыдущая модель серии, LG G3 оказался лишен аппаратных кнопок на лицевой части и торцах. Благодаря этому рамки по бокам практически отсутствовали.
Отличительные черты модели:
- Цветной 5,5-дюймовый экран. Углы обзора здесь максимальные, а темный глубокий цвет контрастно смотрелся с другими красками дисплея.
- Камеры. Модуль на 13 Мп с оптической стабилизацией и лазерной фокусировкой мог делать классные фото даже в движении. Стоит заметить, что на качество абсолютно не влиял плохой свет.
У аппарата два «ближайших родственника» из этой же категории — LG G3 Stylus и LG G3 Mini. Характеристики у них схожие, потому рассматривать их отдельно нет смысла. Стоит учесть только, что дисплей Mini-версии составлял 4,5″.
LG G4
Агрегат имел оригинальное оформление корпуса с крышкой из кожи. Для любителей классики в наличии были предусмотрены отдельные 3 варианта с пластиковым «задником», довольно реалистично имитирующие керамику. В придачу также был выпущен LG G4 Stylus с увеличенным до 5,7 дюймов экраном.
Смартфон был наделен рядом достоинств:
- дисплей на 5,5″ полностью окантован черным стеклом, добавляя тем самым строгости дизайну;
- сочность цветов на экране максимально приближалась к реальным, при этом яркость освещения не влияла на качество цветопередачи;
- 16 Мп камера с автофокусировкай + фронталка на 8 Мп.
LG G5
Первый и единственный модульный смартфон компании. Алюминиевый корпус дополнен экраном с 3D стеклом, изгиб которого по углам очень заметен. Сзади расположился сканер отпечатков, что одновременно выполняет функцию кнопки питания.
Нижняя часть корпуса, извлекаемая из LG G5, пластиковая. На задней крышке — съемный модуль. Таких в ассортименте два: с дополнительным аккумулятором и камерой, а также другой вариант — Hi-Fi+ в подарок меломанам, ценящим качественный звук. При этом устройство можно было использовать как MP-3 плеер, без вспомогательной гарнитуры.
А теперь об отличительных достоинствах:
2 камеры на задней стороне девайса + фронталка 8 Мп. Устройства, расположенные на задней крышке, оснащены автофокусом и хорошей оптикой. Использовать обе камеры одновременно можно при широкоформатной съемке.- Яркий дисплей на 5,3″. Экран здесь с матрицей IPS, прикрытый защитным стеклом. У аппарата предусмотрен режим постоянно включенного дисплея, чтобы в любой момент можно было смотреть время, уведомления и другие вещи по выбранному пользователем сценарию.
Интересная статья в тему: Сравнение двух флагманов LG G5 и G6 — что нового в смартфоне LG G6
LG G6
Модель стала родоначальником моды на узкие вытянутые экраны, управлять которыми можно одной рукой. Сам дисплей имел размеры 5,7″, занимая 80,7 % всей передней панели.
Читайте также: 10 лучших фаблетов (смартфоны с большим экраном) 2017 года
Среди преимуществ особенно выделяются:
- Мощный процессор и память в 4 Гб, которые позволяют играть в требовательный геймплей, а также просматривать видео любого объема;
- Возможность съемки видео, как в обычном, так и широкоформатном режиме;
- Есть функция масштабирования экрана, позволяющая избавиться от черных линий по бокам дисплея во время игр.
Производительный девайс позволяет наслаждаться качественным видео, фото, а также мгновенно решает все необходимые каждодневные задачи. Отличный гаджет премиум-класса.
Серия LG Q
В середине 2017 года компания анонсировала выход новой серии смартфонов под буквой Q. Эти недорогие аппараты имеют большой экран и отличную производительность. К тому же, четыре флагмана линейки абсолютно идентичны внешне, при этом еще и напоминают уже рассмотренные выше модели серии G. Да, речь идет о Q6, Q6а, Q6+ и Q6 Alpha. Отличаются девайсы только объемом памяти.
Q6, Q6а, Q6+ и Q6 Alpha
Рядовой потребитель точно не отличит эти аппараты между собой, тем не менее, каждая отдельная модель была выпущена брендом для различной ценовой категории. Чем меньше в смартфоне памяти — тем он дешевле.
Что же в них особенного? Список достоинств включает:
- Виртуальную корзину, куда переносятся все удаленные приложения, фото и видео. Это позволяет защитить файлы от случайного удаления. Спустя 24 часа корзина очищается автоматически.
- Экран 5,5» передает краски в насыщенной цветовой гамме, углы обзора на высоте. Плотность пикселей здесь составляет 442ppi, что идеально для таких размеров дисплея. Чтобы удобно набирать сообщения в соцсетях или перелистывать меню на экране, можно дополнительно приобрести компактный стилус.
Сзади на LG Q6 только окошко камеры на 13 Мп и яркая вспышка. В данной серии LG отступило от своих принципов оригинальности, а потому расположение кнопок у девайсах абсолютно стандартное, как и дизайн смартфонов в целом.
LG Q8
Как и последняя модель из серии G, этот смартфон обладает корпусом с влаго- и пыле защитой, соответствующей стандарту IP68. Это значит, что с устройством можно свободно гулять под проливным дождем и не бояться его поломки.
Внешне смартфон — точная копия LG G6. Те же 2 камеры на задней крышке, размером 13 Мп и 8 Мп, подсветка и сканер отпечатков пальцев. А в чем же разница?
Отличительными чертами смартфона выступают:
- «Двойной» экран. Сверху основного 5,2″ дисплея расположилась его мини-версия, размером 1040х160 пикселей. Он постоянно активен и помогает настроить быстрый доступ к различным файлам, программам, контактам и т.д. Здесь же находится и фронтальная камера на 5 Мп.
- Мощный процессор и видеочип. Их тандем обеспечивает плавную работу всех приложений, я также тяжелых игр и воспроизведение видео любого объема.
К тому же, у модели 4/32 Гб памяти, которую можно дополнительно расширить с помощью флешки. Экземпляр также может похвастаться отличной аудиосистемой, однозначно порадовавшей меломанов.
Что можно сказать о серии в общем? Q8 довольно оригинальный, вариации Q6 однообразны и ничем особым не выделяются. Зато все смартфоны серии работают на новейшем программном обеспечении Android 7, что гарантирует скорость игр и приложений. Главный недостаток — некое подобие G версии, оформлению явно не хватает индивидуальности.
Серия LG K
Серия K появилась в 2016 году, причем компания сразу выпустила целую линейку смартфонов. Эти бюджетные модели внешне особо не отличаются от недорогих девайсов остальных брендов, но характеристики здесь более, чем примечательны.
В линейке представлены аппараты K3, K4, K5, K7, K8 и K10. Уже в 2018 году вышло продолжение серии с абсолютно нелогичным названием K9. А теперь — интересные «фишки» каждого образца.
LG K3
Мобильник был оформлен в корпус с заметно сглаженными углами и рифленой задней панелью. Переднюю часть занимал небольшой TFT дисплей размером 4,5″. Цвета на нем выглядели слегка приглушенными, хотя контрастность, как для бюджетника, вполне приемлемая.
Среди достоинств:
- основная 5 Мп камера, включить которую можно было двойным нажатием кнопки громкости;
- снимок делался в одно касание к любой точке на дисплее;
- фронтальная камера выдавала селфи-фото по взмаху ладошкой;
- дисплей служил своеобразной вспышкой, помогая сделать качественные снимки для селфи даже при плохом освещении.
Небольшого объема памяти было достаточно, чтобы хранить важную информацию, но для игр или больших приложений ее не хватало. Та же ситуация и с батареей: очень желательно было носить с собой док-станцию.
Интересная статья в тему: Как правильно заряжать смартфон. 5 простых советов, которые помогут продлить срок службы батареи
LG K4Аппарат оснастили небольшим дисплеем на 4,5″ с наэкранными сенсорными кнопками, функции которых можно было отредактировать в настройках. Расположение камер и клавиш управления — стандартное, как и дизайн в целом. Чтобы немного разнообразить убранство своего девайса, можно было добавить к нему эффектное кольцо-держатель, например Piko BS-01M Silver.
Среди преимуществ:
- TFT дисплей с плотностью пикселей 218 ррi;
- дисплей с возможностью регулировки яркости, чтобы уменьшить таким образом степень напряжения на глаза;
- емкий аккумулятор, которого даже при активном использовании хватало на 2 суток;
- 2 камеры с автофокусом и вспышкой для хороших снимков при любом освещении.
Радиомодуль у смартфона один, а потому переключаться между сим-картами приходилось самостоятельно. Для этого на экране есть специальная кнопка.
LG K5
Полное название модели — LG К5 Х220DS. Производитель выпустил ее в глянцевом корпусе приятных расцветок: «металл», «золото», «перламутр», «глубокий серый».
Смартфон относится к супер-бюджетной категории, а потому особых возможностей здесь не найти. Вот несколько «плюсов» модели, заслуживающих внимания:
- аккуратный 5” экран;
- 2 камеры, что позволяют делать четкие снимки, правда, без автофокуса;
- привычный и понятный интерфейс без лишних приложений.
На устройстве легко запускаются игрушки любого формата, причем работает все без зависаний. Графика визуально кажется слегка урезанной и нечеткой, даже если выбрать максимальные настройки.
LG K7
Еще один бюджетник от корейцев, что выделяется на фоне предшественников серии большим дисплеем с надежным защитным покрытием и оригинальной кнопкой для регулировки звука.
Среди главных особенностей LG К7:
- увеличенный до 2125 мАч аккумулятор, что позволяет работать смартфону намного дольше, чем его «младшие братья»;
- ТFT дисплей на 5 дюймов с яркими и насыщенными цветами, сохраняющими контрастность независимо от угла обзора;
- камеры на 8 Мп и 5 Мп со стандартным набором настроек и автофокусом, делающие качественные снимки при любых условиях и освещенности.
Работает устройство очень быстро. За скорость отвечает мощный процессор, видеоускоритель и ОС Android 5.1с брендовым приложением Google.
LG K8
Устройство хоть и относится к недорогим аппаратам, но внешне выглядит, как премиум-смартфон. На передней панели разместился экран с изогнутым 2,5D стеклом. Благодаря такому дисплею края выглядят оригинально, а боковые рамки практически не видны.
Образец серии представлен в двух вариантах: LG К8 и LG К8 LTE (поддерживает связь одноименного формата). Разница между ними состоит в задней крышке девайса, а функционал у моделей практически идентичен.
Сильными сторонами устройства выступают:
- Дисплей на 5 дюймов с плотностью пикселей 294 ррi. Цветопередача отличная, но при определенных углах изображение принимает легкий синий оттенок.
- Матрица воспринимает 10 одновременных касаний пальцев, что будет приятным сюрпризом для геймеров.
Производительность системы у LG К8 замечательная. Стандартные приложения открываются плавно и работают на максимальной скорости. Небольшое «торможение» может возникнуть с некоторыми ресурсоемкими файлами, но этот момент не критичен.
LG K10
Модель, как и LG К8, имеет «двойника» с оригинальной задней крышкой и возможностью использовать связь формата LTE. Характеристики обоих экземпляров схожи, потому рассматривать их в отдельности смысла нет.
Ряд своих особенностей LG К10:
- Яркий и красочный IPS дисплей в 5,3 дюйма. Просматривать на нем видео — сплошное удовольствие, ведь цвета глубокие, контрастные, а изображения сохраняют четкость при любых углах обзора.
- Основной модуль для съемки на 13 Мп. Кроме мощной вспышки, он может «похвастаться» также наличием автофокуса и качественной съемкой видео в режиме FHD. Настройки дополнены интересными возможностями, что точно не оставят равнодушными фотолюбителей.
К10 и К10 LTE замечательно справляются с возложенными на них нагрузками. Фото, видео, приложения любого формата, соцсети и многое другое мгновенно откликаются на прикосновения пальца к сенсору. Хоть модели и не относятся к флагманской категории, но их возможности и функционал ничуть не хуже.
LG K9
Полностью пластиковая модель с разборным корпусом увидела свет в начале 2018 года. Как и большинство предыдущих вариантов серии, у этого образца яркий 5″ дисплей и кнопка включения на задней крышке девайса.
Среди особенностей:
- хорошая камера на 8 Мп помогает создать качественные детализированные снимки + портретный режим, что слегка «размывает» задний фон;
- специальная функция «подавление шумов» для съемки в условиях ограниченной освещенности.
Аккумулятор в LG К9 съемный, что также относится к достоинствам модели. В случае необходимости его легко можно заменить новой батареей.
Если обобщить характеристики всех смартфонов серии К, то их явным достоинством выступит возможность устанавливать 2 симки и оригинальные камеры, что делают фото по взмаху руки. А вот среди слабых качеств — аккумулятор небольшой емкости. Хоть он и съемный во всех моделях, его заряда хватает ненадолго.
Серия LG Х
В эту серию вошли недорогие смартфоны с усовершенствованной «начинкой». Азиатский бренд принял решение выпустить линейку устройств, где каждый аппарат будет наделен своими, особыми, функциями. То есть, у каждого мобильного телефона серии своя узкая специализация. Чтобы посмотреть, как это выглядит на практике, стоит провести краткий обзор моделей.
LG Х Style
Дисплей устройства на 5 дюймов был защищен олеофобным покрытием, из-за чего скольжение по экрану было очень плавным.
Главные «плюсы» LG Х Style:
- возможность активации мобильника двойным тапом;
- фронтальная камера запускалась удержанием кнопки громкости сбоку девайса;
- качественная аудиосистема, что выдавала одинаково чистый звук как в наушниках, так и без;
- IPS дисплей с регулятором яркости цветов и 100% обзором.
Главный модуль камеры смартфона составлял 8 Мп. Для телефона такого формата это немного, хотя фото и видео она снимала качественные. В настройках также была фирменная «фишка» LG — использование экрана в качестве подсветки.
LG Х Power
Внутри устройства помещен не только хороший процессор, но и емкий аккумулятор. Объем батареи здесь 4500 мАч: это и является главной «фишкой» девайса.
Дополнительные «плюсы»:
- яркий 5,3″ IPS дисплей с хорошей графикой и максимально реалистичной цветопередачей;
- монолитный неразборной корпус, благодаря чему конструкция напрочь лишена скрипов;
- прорезиненная задняя крышка, где не видны царапины и следы от пальцев;
- Андроид 6.0, дополненный оболочкой UX, которая предлагает множество интересных функций, например, отключить ненужные приложения в меню или полностью скрыть его.
Все программы на LG Х Power запускаются достаточно быстро. Это же касается и повторного запуска приложений из свернутого списка.
На две камеры смартфона можно делать четкие снимки с правильной цветопередачей. Солнечный день или плохое освещение не станут помехой для ярких красок, контрастности и отменной детализации.
LG Х Cam
Недорогая модель может «похвастаться» двумя основными камерами, чем напоминает экземпляры из серии G. Снимают модули широкоформатные фото и такое же видео, причем условия съемки абсолютно не отражаются на качестве.
Есть у LG Х Cam и другие «плюсы»:
- громкий динамик на задней крышке, звук из которого слышно, даже если положить телефон экраном вверх;
- защитное стекло на 5,2″ экране, слегка изогнутое сверху и снизу, что добавляет уникальности дизайну;
- дисплей с насыщенными красками, правильной цветопередачей и плотностью пикселей в 424 ppi, благодаря чему заметить эти маленькие квадратики на экране практически невозможно.
Аппарат самый тонкий и легкий в своем сегменте. Благодаря закругленным рамкам, пользоваться им очень удобно, даже при помощи одной руки. Кроме того, девайс мгновенно синхронизируется с другими устройствами, например со смарт-часами, что еще больше упрощает эксплуатацию.
LG Х View
Главной особенностью этой модели выступает второй экран, компактно размещенный над основным. Корпус девайса выполнен из блестящего стекловолокна, который приятно переливается глянцем на солнце. Этот материал не оставляет на своей поверхности царапин и сколов, а пятна от пальцев просто удаляются, например, универсальной влажной салфеткой для оргтехники DataFlash.
Среди достоинств гаджета:
- экран в 4,93″ с HD разрешением и без воздушной прослойки, что делает картинку насыщенной и контрастной;
- дополнительный экран можно включить на постоянную активность и выводить на него уведомления, время, дату, другую важную информацию;
- основная камера имеет быстрый автофокус и светодиодную вспышку.
К тому же, в маленький дисплей есть возможность вынести иконки 4-х любимых приложений или такое же количество телефонных номеров.
В LG Х View установлена ОС Android Marshmallow. Правда, компания настолько укрыла ее фирменной оболочкой, что от чистой системы осталось очень мало.
Технические характеристики
Сравнение 4-х линеек корейского бренда
Все серии смартфонов компании отличаются между собой не только характеристиками, но и по внешнему виду, функционалу, эргономике. В чем же фишка каждой? Ответы — в следующей таблице.
В конце этого обзора стоит заметить, что каждый экземпляр линейки по-своему индивидуален. Выбирая из коллекции подходящий вариант, акцентировать внимание нужно на внешний вид, камеры, железо и многое другое. Не последнюю роль здесь также играет бюджет. Рассмотрев параметры каждого экземпляра, дело останется за малым — определить для себя «золотую середину».
Приложение Apple TV – Устройства – Apple (RU)
Устройства с поддержкой
приложения Apple TV
Стриминговые устройства и телевизоры Android TV
(версия 8 и новее)
- TCL
- Philips
- HiSense
- Panasonic
- NVIDIA SHIELD TV
LG
- LG OLED — серии RX, ZX, WX, GX, CX, BX (2020 г.)
- LG OLED — серии R9, Z9, W9, E9, C9, B9 (2019 г.)
- LG OLED — серии B8, C8, G8, E8 (2018 г.)
- LG OLED — серии W7, G7, E7, C7, B7 (2017 г.)
- LG OLED — серии G6, E6, C6, B6 (2016 г.)
- LG NanoCell — серии Nano 99, 97, 95, 90, 85, 80 (2020 г.)
- LG NanoCell — серии SM99, SM95, SM90, SM86, SM81 (2019 г.)
- LG UHD TV — серии UN85, UN73, UN71, UN70, UN69 (2020 г.)
- LG UHD TV — серии UM80, UM75, UM73, UM71, UM69 (2019 г.)
- LG UHD TV — серии UK62 (и выше), UK7 (2018 г.)
- LG UHD TV — серии UJ77, UJ65, UJ64, UJ63, UJ62, UJ60 (2017 г.)
- LG UHD TV — серии UH65, UH63, UH61, UH60, UH55 (2016 г.)
- LG SuperUHD TV — серии SK9, SK8 (2018 г.)
- LG Super UHD TV — серии SJ95, SJ85, SJ80 (2017 г.)
- LG Super UHD TV — серии UH95, UH85, UH77, UH76 (2016 г.)
PlayStation
- PlayStation 4
- PlayStation 5
Roku
- Roku Smart Soundbar 9100X
- Roku 4K TV A000X, C000X, 6000X, 7000X
- Roku TV 8000X, D000X
- Roku Smart Soundbar 9101X, 9102X
- Roku Express 3900X, 3930X
- Roku Express+ 3910X, 3931X
- Roku HD 3932X
- Roku Streaming Stick 3600X, 3800X
- Roku Streaming Stick+ 3810X, 3811X
- Roku Premiere 3920X, 4620X
- Roku Premiere+ 3921X, 4630X
- Roku Ultra 4640X, 4660X, 4661X, 4670X, 4800X
- Roku Ultra LT 4662X
- Roku 2 4210X, 4205X
- Roku 3 4200X, 4230X
Samsung
- Samsung QLED 8K серий Q9 и Q8 (2019 и 2020 гг.)
- Samsung QLED 4K серий Q9, Q8, Q7 и Qx (2017, 2018, 2019, 2020 и 2021 гг.)
- Samsung UHD серий 8, 7 и 6 (2017, 2018, 2019, 2020 и 2021 гг.)
- Samsung FHD/HD серий 5 и 4 (2017, 2018 и 2020 гг.)
- Samsung серии Serif (2019 и 2020 гг.)
- Samsung серии The Frame (2017, 2018, 2019, 2020 и 2021 гг.)
- Samsung серии The Sero (2019 и 2020 гг.)
Sony
- Sony A9S Series (2020 г.)
- Sony A9F Series (2018 г.)
- Sony A9G Series (2019 г.)
- Sony X85G Series (2019 г., модели 55”, 65”, 75” и 85”)
- Sony X95G Series (2019 г.)
- Sony X80H Series (2020 г.)
- Sony X85H Series (2020 г.)
- Sony X90H Series (2020 г.)
- Sony X95H Series (2020 г.)
- Sony X80J Series (2021 г.)
- Sony X85J Series (2021 г.)
- Sony X90J Series (2021 г.)
- Sony X91J Series (2021 г.)
- Sony X95J Series (2021 г.)
- Sony Z8H Series (2020 г.)
- Sony Z9G Series (2019 г.)
- Sony Z9F Series (2018 г.)
- Sony Z9J Series (2021 г.)
VIZIO
- VIZIO OLED (2020 г.)
- VIZIO P‑Series Quantum X (2019 и 2020 гг.)
- VIZIO P‑Series Quantum (2018, 2019 и 2020 гг.)
- VIZIO P‑Series (2016, 2017 и 2018 гг.)
- VIZIO M‑Series Quantum (2019 и 2020 гг.)
- VIZIO M‑Series (2016, 2017 и 2018 гг.)
- VIZIO E‑Series (2016, 2017 гг. и UHD‑модели 2018 г.)
- VIZIO V‑Series (2019 и 2020 гг.)
- VIZIO D‑Series (2018 и 2019 гг.)
Xbox
- Xbox One
- Xbox One S
- Xbox Series X
- Xbox Series S
Как узнать модель телевизора LG, несколько способов
Обновление прошивки телевизора LG: видео
Чтобы приобрести запасные детали для телевизора LG, необходимо знать маркировку его модели, в противном случае запчасти могут просто не подойти. У многих владельцев возникают сложности с определением модели, особенно это актуально, когда документы от техники утеряны. В данной статье мы рассмотрим несколько способов определить модель телевизора lg.
Как узнать модель телевизора LG:- Инструкция по эксплуатации;
- Наклейка на задней части корпуса;
- Меню телевизора;
Конечно, самый доступный способ узнать, какой модели ваш телевизор, это посмотреть документы к технике. На главной странице, обложке, инструкции по эксплуатации, непременно указан номер модели, как и на многих других страницах. Поэтому, если есть возможность, первым делом воспользуйтесь этим советом. Если же инструкция была утеряна при переезде, либо вы просто не можете ее найти, переходите у следующему методу.
Заводская наклейкаОбратите внимание на заднюю крышку телевизора, на каждом, без исключения, телевизоре марки LG, там должна быть заводская наклейка со всей информацией о продукте. Указывают на наклейке не только маркировку модели техники, но и серийный номер, и номер партии, и даже страну-производителя. Таким образом, вы получите всю интересующую вас информацию, не прибегая к каким либо манипуляциям с самим телевизором.
Если документы отсутствуют и ТВ не включается, это пожалуй единственный доступный способ узнать его модель, не прибегая к помощи мастеров сервисного центра LG.
Как узнать какая модель вашего телевизора LGУ каждого телевизора lg хоть и схожий интерфейс настроек меню, все же может отличаться, поэтому рассмотрим два самых распространенных примера.
Первым примером станет обычный кинескопный телевизор LG, такие, хоть и сняты с производства, до сих пор широко используются. Если вам нужно определить модель именно такого устройства, воспользуйтесь пультом дистанционного управления. На пульте жмите «menu» или, в некоторых случаях «setting», на экране появится окно с выбором разделов. Среди разделов найдите «информация о телевизоре», или «справка». Открыв данную вкладку, вы сможете увидеть как наименование модели, так и прочую информацию об оборудовании.
Теперь расскажу, как узнать какая модель вашего «умного» телевизора LG. Обладатели такой техники сразу поняли, что речь идет о смарт ТВ, такие телевизоры очень сильно отличаются от менее функциональных конкурентов.
В случае с таким устройством, нажимайте на пульте кнопку «smart» и перейдите в настройки. Здесь, в самом низу, вы увидите раздел «информация о продукте/услуге», именно он и нужен вам, чтобы узнать модель, версию прошивки, дату последнего обновления и прочие, многочисленные, полезные данные.
Источник: http://lgexperts.ru/
Не помогла статья?
Вы можете задать вопрос мастерам из нашего сервисного центра, позвонив по телефону или написав свой вопрос на форму обратной связи.
Ваше сообщение отправлено.
Спасибо за обращение.
Настройка цифровых каналов на телевизорах LG
Настройка цифровых каналов на телевизорах LG
(на примере модели LG 32LM 450)
В зависимости от модели, интерфейс и структура меню могут отличаться, но общий смысл и порядок действий остается актуален.
1. Войдите в меню настроек. Если у вас телевизор с функцией Smart TV нажмите кнопку [Home] на пульте и выберите пункт «Настройки», если у вас телевизор без этой функции, то просто нажмите кнопку [Menu] на пульте
Внимание! Некоторые модели на одной из стадий настройки могут запросить PIN-код. Если вы не устанавливали собственный, попробуйте ввести один из стандартных: 0000, 1111, 1234
2. В разделе «Опции» укажите страну. В телевизорах выпущенных до 2010 включительно необходимо выбрать одну из стран Западной Европы, например Германию или Швейцарию. В телевизорах 2011 года и более современных можно выбрать Россию
Внимание! Если вы выбрали одну из стран Западной Европы, поменяйте в пункте «Язык(Language)»основной язык аудио на «Русский»
3. После смены страны телевизор сразу предложит выполнить автонастройку каналов. Если этого не произошло зайдите в раздел «Настройка» и выберите пункт «Автопоиск»
4. В источниках сигнала выберите «Кабель». Если этого пункта нет во вариантах, или телевизор вообще не предлагает вам выбрать источник сигнала, значит либо вы неверно указали страну, либо ваш телевизор не имеет тюнера стандарта DVB-C и не может настроить цифровое ТВ
5. Выберите тип поиска «Быстрый» и введите следующие параметры поиска:
Частота (начальная частота) 306000
Конечная частота 354000
Символьная скорость 7000
Модуляция 128 QAM
ID сети Авто
В зависимости от модели телевизора и выбранной страны, некоторые параметры вводить не нужно.
6. Телевизор может спросить у вас несколько дополнительных параметров. Тогда расставьте галочки следующим образом:
Пропуск зашифрованных программ – нет
Только цифровая настройка – да
Автонумерация – да
7. Если все сделано правильно, то телевизор должен найти около 58 телеканалов
8. После поиска каналов необходимо настроить внутренние часы телевизора, для этого вернитесь в меню настроек и в разделе «Время» выберите пункт «Часы»
9. Установите режим «Авто» (точное время телевизор будет получать из кабельной сети). При выборе часового пояса укажите «Смещение» и «GMT»
Внимание! Если после смены режима на «Авто», выбор часового часового пояса будет недоступен, просто подождите несколько секунд либо выйдите из этого меню и снова зайдите
10. На некоторых моделях телевизоров некорректно работает Автообновление каналов. Если после включения телевизоров у вас сбрасываются каналы, но его необходимо выключить.
Для этого в разделе «Настройка» выберите пункт «Настройка цифрового кабеля» и в строке«Автообновление каналов» поставте «Выкл.»
Топовые модели техники LG по версии экспертов CES
Ежегодно на выставку CES, компании-производители бытовой техники и электроники привозят свои лучшие технологические разработки. В этом году LG Electronics получила самое большое количество наград от отраслевых экспертов CES за все время участия в выставке – всего их более 150.
Лучший телевизор CES
Открывает этот список награда «Лучший телевизор CES», которую LG получает шестой год подряд. Организаторы отметили телевизоры CX серии OLED, как лучшее из множества других, представленных на выставке CES. Модель CX относится к линейке OLED-телевизоров LG 2020 года и является преемником прошлогодней модели C9.
Примененный в CX новейший интерфейс HDMI 2.1 обеспечивает в разы большую пропускную способность по сравнению с HDMI 2.0, что позволит выводить изображение в более высоком разрешении.
Телевизор оснащен матрицей с 10-битной глубиной цвета. На сегодняшний день в большинстве современных телевизоров применяются 8-битные матрицы.
В дополнение к уже традиционным HDR10, Dolby Vision и HLG, модель CX может теперь работать с форматом Dolby Vision IQ. Основой Dolby Vision IQ являются сенсоры, которые автоматически следят за освещенностью. На основе получаемой от датчиков информации система оптимизирует картинку, сохраняя максимум деталей.
Награждение за лучший продукт CES входит в официальную программу призов выставки CES.
Лучший инновационный продукт выставки CES
Так же компания LG подтвердила свои лидирующие позиции в категории телевизоров, представив самую успешную продукцию в сегменте — телевизоры LG OLED. Они были отмечены многочисленными отраслевыми экспертами и получили в общей сложности 83 награды.
Ультрасовременный сворачивающийся телевизор LG SIGNATURE OLED TV R был удостоен премии «Лучший инновационный продукт выставки CES» от Ассоциации потребительских технологий премии в категории «Дисплеи и экраны». Это единственный в мире телевизор, экран которого может полностью исчезнуть из поля зрения, скрывшись в стильной алюминиевой основе, когда он не используется.
Телевизор обладает 65-дюймовой матрицей с 4K-разрешением и встроенной аудиосистемой мощностью 100 Вт и поддержкой Dolby Atmos.
Механизм рассчитан на 50 000 циклов сворачивания — этого хватит на 17 лет, если включать и выключать его по восемь раз в день.
Если вы не смотрите телевизор, то он может работать как фоторамка, музыкальный плеер, часы или хаб с погодой и другой полезной информацией. В таком случае экран выезжает из корпуса лишь частично.
Лучший дисплей года
Телевизор LG SIGNATURE OLED Z 8K TV получил награду CTA Mark of Excellence, как Лучший дисплей года. Это первым в мире OLED-телевизор с разрешением 8К. Кроме того, он еще и самый большой на сегодняшний день — диагональю 88 дюймов.
Телевизор обеспечивает разрешение 7680 x 4320 пикселей. Он насчитывает 33 миллиона самоизлучающих пикселей, что в 16 раз больше, чем в телевизоре с разрешением Full HD и в четыре раза больше, чем в телевизоре с разрешением UHD.
В OLED-телевизорах LG 2020 года появилась новая функция «Режим кинопроизводителя» (Filmmaker Mode), которая призвана обеспечить демонстрацию фильма в том виде, в каком он был задуман режиссёром. При её активации в телевизоре автоматически отключаются технологии сглаживания движения и улучшения изображения, и фильм воспроизводится с оригинальной цветопередачей, частотой кадров и соотношением сторон.
Два десятка наград получили телевизоры LG NEXTGEN OLED, которые работают со стандартом ATSC 3.0.
Всего компания LG была удостоена 17 наград за лучшие инновации выставки CES в категориях бытовая техника, оборудование для домашнего развлечения и мобильных коммуникаций. Компания LG также получила восторженные оценки и отзывы технических специалистов и экспертов таких изданий, как Time, Newsweek, Engadget, Future, Good Housekeeping, The Verge, Architectural Digest, и многих других.
все модели с фото, характеристиками и ценами
Компания LG практически полностью сосредоточилась на смартфонах — по крайней мере у нас. Поэтому кнопочные телефоны корейской марки у нас встречаются нечасто. Расскажем о некоторых моделях, которые все еще можно купить.
LG G360
Это одна из тех моделей, которая может вас удивить, ведь она сделана в виде «раскладушки». Когда-то такие телефоны пользовались огромным спросом, но сегодня в почете смартфоны.
Модель интересна тем, что здесь применяется крупный 3-дюймовый экран, довольно-таки неплохая камера на 1,3 МП (по меркам кнопочных телефонов), есть поддержка 2 сим-карт, несколько цветовых оттенков на выбор — от белого до красного.
- Диагональ экрана: 3 дюйма
- Разрешение: 320×240
- Количество SIM-карт: 2
- Тип мелодий: полифонические, MP3-мелодии
- Аудио: MP3, FM-радио
- Фотокамера: 1,3 МП
- Стандарт связи: GSM 900/1800/1900
- Доступ в интернет: нет
- Слот для карт памяти: есть
- Емкость аккумулятора: 950 мАч
LG A390
Симпатичный кнопочный телефон привычного форм-фактора. Сразу на себя обращает необычная задняя крышка — кажется, что она металлическая, но на деле это пластик, фактурой и цветом напоминающий металл.
В LG A390 используется 2,2-дюймовый экран, есть поддержка 2 сим-карт, камера на 1,3 МП, возможность записи видеороликов, FM-радио и воспроизведение мелодий. Доступ в интернет возможен с помощью технологий GPRS и EDGE.
- Диагональ экрана: 2,2 дюйма
- Разрешение: 320×240
- Количество SIM-карт: 2
- Тип мелодий: полифонические, MP3-мелодии
- Аудио: MP3, AAC, WMA, FM-радио
- Фотокамера: 1,3 МП
- Стандарт связи: GSM 900/1800/1900
- Доступ в интернет: GPRS, EDGE
- Слот для карт памяти: есть
- Емкость аккумулятора: 1700 мАч
LG A399
Эта модель во многом схожа с LG A390. Так, здесь используется экран диагональ 2,2 дюйма, есть поддержка 2 сим-карт, имеется Bluetooth. А вот дизайн совсем другой.
Кроме того, в модели LG A399 камера должна быть чуть лучше, поскольку нее несколько выше разрешение — 2 МП.
- Диагональ экрана: 2,2 дюйма
- Разрешение: 320×240
- Количество SIM-карт: 2
- Тип мелодий: полифонические, MP3-мелодии
- Аудио: MP3, FM-радио
- Фотокамера: 2 МП
- Стандарт связи: GSM 900/1800/1900
- Доступ в интернет: WAP
- Слот для карт памяти: есть
- Емкость аккумулятора: 1500 мАч
LG B220
Простенькая модель с небольшим цветным экраном диагональю 1,45 дюйма. В телефоне нет камеры, зато можно использовать сразу 2 сим-карты. Есть FM-радио.
К достоинствам отнесем вес LG B220 — он составляет лишь 66 г, что очень мало по любым меркам.
- Диагональ экрана: 1,45 дюйма
- Разрешение: 128×128
- Количество SIM-карт: 2
- Тип мелодий: полифонические
- Аудио: FM-радио
- Фотокамера: нет
- Стандарт связи: GSM 900/1800
- Доступ в интернет: нет
- Слот для карт памяти: нет
- Емкость аккумулятора: 950 мАч
Как принимать решения в несовершенном мире
Даже самые лучшие в мире модели несовершенны. Это понимание важно помнить, если мы хотим научиться принимать решения и действовать ежедневно.
Например, рассмотрим работу Альберта Эйнштейна.
В течение десятилетнего периода с 1905 по 1915 год Эйнштейн разработал общую теорию относительности, которая является одной из важнейших идей современной физики. Теория Эйнштейна с течением времени удивительно хорошо себя зарекомендовала.Например, общая теория относительности предсказала существование гравитационных волн, что ученые окончательно подтвердили в 2015 году — целых 100 лет после того, как Эйнштейн впервые записал это.
Однако даже лучшие идеи Эйнштейна были несовершенными. Хотя общая теория относительности объясняет, как Вселенная работает во многих ситуациях, в некоторых крайних случаях (например, внутри черных дыр) она разрушается.
Все модели неправильные, некоторые полезны
В 1976 году британский статистик Джордж Бокс написал знаменитую фразу: «Все модели ошибочны, некоторые полезны.”1
Его точка зрения заключалась в том, что мы должны больше сосредоточиться на том, можно ли что-то применить в повседневной жизни с пользой, а не на бесконечных спорах о том, верен ли ответ во всех случаях. Как выразился историк Ювал Ноа Харари: «Ученые в целом согласны с тем, что никакая теория не является стопроцентно правильной. Таким образом, настоящая проверка знаний — это не истина, а полезность. Наука дает нам силу. Чем полезнее эта сила, тем лучше наука ».
Даже работа Эйнштейна не во всех случаях была идеальной, но она была невероятно полезной — не только для улучшения нашего понимания мира, но и для практических целей.Например, глобальные системы позиционирования (GPS), используемые в вашем телефоне и в автомобиле, должны учитывать эффекты относительности для предоставления точных указаний. Без общей теории относительности наши навигационные системы не были бы точными.
Как принимать решения в несовершенном мире
Какие шаги мы можем предпринять для принятия решений, учитывая, что ни один взгляд на мир не является точным во всех ситуациях?
Один из подходов — разработать широкий набор основ для размышления о мире.Некоторые эксперты называют каждую схему «ментальной моделью». Каждая ментальная модель — это способ мышления о мире. Чем больше у вас ментальных моделей, тем больше у вас инструментов мышления для принятия решений.
Например, вот три способа думать о производительности:
- Правило двух минут: если что-то занимает менее двух минут, сделайте это сейчас. Цель этого правила — помочь вам перестать откладывать дела на потом и начать действовать.
- Метод Айви Ли: составьте список дел, записав шесть самых важных дел, которые вам нужно выполнить завтра, расставьте приоритеты и поработайте над ними по порядку.Цель этого метода — помочь вам поработать в первую очередь над самым важным.
- Стратегия Сайнфельда: выберите новую привычку и нарисуйте X в календаре каждый день, когда вы придерживаетесь этого поведения. Цель этого метода — помочь вам сохранить последовательность и сохранить жизнеспособность.
Какие из этих моделей идеальны? Конечно, нет. Но если вы объедините их, то у вас будет стратегия, которая поможет вам действовать прямо сейчас (Правило двух минут), стратегия, которая поможет вам более эффективно планировать свой день (Метод Айви Ли), и стратегия, которая может поможет вам сохранить последовательность в долгосрочной перспективе (Стратегия Сайнфельда).
Вам нужен набор ментальных моделей, потому что ни одна структура не может работать в каждой ситуации.
Делаем все возможное, используя то, что у нас есть
Признание того, что в некоторых случаях все модели ошибочны, не означает игнорирование фактов. Как общество, мы должны искать лучшие ответы, искать доказательства и стремиться повысить точность наших знаний.
В то же время на другом конце спектра есть общая опасность. Слишком много людей тратят время на споры о том, правильно ли что-то, тогда как им следует сосредоточиться на том, действительно ли это полезно.
Мы живем в мире, полном неопределенности, но нам все еще нужно добиваться результатов и принимать решения. Наша ответственность — развить способ мышления о мире, который в целом соответствует имеющимся у нас фактам, но не зацикливаться на мыслях о вещах, которые на самом деле никогда ничего не делают. По словам профессора Гарварда Дэниела Гилберта, «мир не может позволить себе роскоши ждать полных ответов, прежде чем он начнет действовать».
Беспристрастные ответы — лучшее, что у нас есть.Сосредоточьтесь на том, что практично, и действуйте. Все модели ошибочны при некоторых обстоятельствах, но важно то, насколько они полезны в целом.
научного моделирования | наука | Britannica
научное моделирование , создание физического, концептуального или математического представления реального явления, которое трудно наблюдать напрямую. Научные модели используются для объяснения и предсказания поведения реальных объектов или систем и используются в различных научных дисциплинах, от физики и химии до экологии и наук о Земле.Хотя моделирование является центральным компонентом современной науки, научные модели в лучшем случае являются приближениями объектов и систем, которые они представляют, а не точными копиями. Таким образом, ученые постоянно работают над улучшением и уточнением моделей.
Цели научного моделирования различны. Некоторые модели, такие как трехмерная модель двойной спирали ДНК, используются в первую очередь для визуализации объекта или системы, часто создаваемые на основе экспериментальных данных. Другие модели предназначены для описания абстрактного или гипотетического поведения или явления.Например, прогностические модели, такие как те, которые используются в прогнозировании погоды или в прогнозировании последствий эпидемий болезней для здоровья, как правило, основаны на знаниях и данных о явлениях из прошлого и полагаются на математический анализ этой информации для прогнозирования будущих, гипотетических проявлений аналогичных явлений. явления. Прогностические модели имеют большое значение для общества из-за их потенциальной роли в системах предупреждения, например, в случае землетрясений, цунами, эпидемий и подобных крупномасштабных бедствий.Однако, поскольку ни одна прогностическая модель не может учесть все переменные, которые могут повлиять на результат, ученые должны делать предположения, которые могут поставить под угрозу надежность прогностической модели и привести к неверным выводам.
Подробнее по этой теме
Принципы физической науки: Упрощенные модели
Процесс рассечения был рано доведен до предела в кинетической теории газов, с которой в ее современной форме по существу и началось…
Ограничения научного моделирования подчеркиваются тем фактом, что модели, как правило, не являются полными представлениями. Например, модель атома Бора описывает структуру атомов. Но хотя это была первая атомная модель, включающая квантовую теорию и служившая базовой концептуальной моделью электронных орбит, она не была точным описанием природы вращающихся электронов. Также он не мог предсказать уровни энергии для атомов с более чем одним электроном.
Модель атома БораВ модели атома Бора электроны движутся по определенным круговым орбитам вокруг ядра. Орбиты обозначены целым числом — квантовым числом n . Электроны могут прыгать с одной орбиты на другую, излучая или поглощая энергию. На вставке электрон прыгает с орбиты n = 3 на орбиту n = 2, испуская фотон красного света с энергией 1,89 эВ.
Encyclopædia Britannica, Inc.Фактически, в попытке полностью понять объект или систему, необходимы несколько моделей, каждая из которых представляет часть объекта или системы.В совокупности модели могут обеспечить более полное представление или, по крайней мере, более полное понимание реального объекта или системы. Это иллюстрируется волновой моделью света и моделью света частиц, которые вместе описывают дуальность волна-частица, в которой свет понимается как обладающий как волновыми, так и частичными функциями. Долгое время считалось, что волновая теория и теория частиц света противоречат друг другу. Однако в начале 20 века с осознанием того, что частицы ведут себя как волны, две модели этих теорий были признаны взаимодополняющими, что значительно облегчило новые идеи в области квантовой механики.
Белок сибирской язвыЭто компьютеризированное изображение сибирской язвы показывает различные структурные взаимоотношения семи единиц внутри белка и демонстрирует взаимодействие лекарственного средства (показано желтым цветом), связанного с белком, для блокирования так называемой единицы летального фактора. Биоинформатика играет важную роль, позволяя ученым предсказать, где молекула лекарства будет связываться с белком, учитывая индивидуальные структуры молекул.
Оксфордский университет / Getty Images Получите подписку Britannica Premium и получите доступ к эксклюзивному контенту.Подпишитесь сейчасСуществует множество приложений для научного моделирования. Например, в науках о Земле моделирование атмосферных и океанских явлений актуально не только для прогнозирования погоды, но и для научного понимания глобального потепления. В последнем случае следует отметить модель общей циркуляции, которая используется для моделирования изменения климата, вызванного человеком и не человеком. Моделирование геологических явлений, таких как конвекция внутри Земли и теоретические движения земных плит, позволило ученым углубить знания о вулканах и землетрясениях, а также об эволюции земной поверхности.В экологии моделирование можно использовать для понимания популяций животных и растений, а также динамики взаимодействий между организмами. В биомедицинских науках физические (материальные) модели, такие как мухи Drosophila и нематода Caenorhabditis elegans , используются для исследования функций генов и белков. Точно так же трехмерные модели белков используются для понимания функции белков и помощи в разработке лекарств. Научное моделирование также находит применение в городском планировании, строительстве и восстановлении экосистем.
Модель высоты волны цунамиКарта, подготовленная Национальным управлением океанических и атмосферных исследований США, на которой изображена модель высоты волны цунами для Тихого океана после землетрясения 11 марта 2011 года в районе Сендай, Япония.
NOAA Center for Tsunami ResearchМодели коронавируса не должны быть правильными
Администрация Трампа только что опубликовала модель траектории пандемии COVID-19 в Америке. Мы можем ожидать много споров о том, являются ли его оценки смертности слишком высокими или низкими.И его широкий диапазон возможных результатов, безусловно, сбивает с толку: какое число правильное? Ответ одновременно сложен и прост. Вот трудная часть: нет правильного ответа. Но вот простая часть: правильные ответы — не то, для чего нужны эпидемиологические модели.
Эпидемиологи обычно обращаются к моделям для прогнозирования прогрессирования инфекционного заболевания. Борьба с подозрением общественности в отношении этих моделей стара как современная эпидемиология, которая берет свое начало со знаменитых карт холеры, составленных Джоном Сноу в 1854 году.Эти карты впервые доказали, что ужасные бедствия Лондона распространяются через кристально чистую пресную воду, выходящую из насосов, а не через зловонный воздух города. Многие люди не верили Сноу, потому что они жили в мире без ясного понимания теории микробов и только самых элементарных микроскопов.
В наше время, однако, иногда проблема заключается в том, что люди верят эпидемиологам, а затем злятся, когда их модели не являются хрустальными шарами. Возьмем, к примеру, резкий поворот в политике Великобритании в отношении COVID-19.Несколько недель назад в Великобритании почти не было мер социальной изоляции, и, согласно некоторым сообщениям, правительство планировало позволить вирусу распространиться среди населения, за исключением пожилых людей, которых должны были держать дома. . Идея заключалась в том, чтобы позволить достаточному количеству людей заболеть и вылечиться от легкой версии болезни, чтобы создать «коллективный иммунитет».
Прочтите: Как закончится пандемия
Все быстро изменилось после того, как эпидемиологическая модель Имперского колледжа Лондона прогнозировала, что без радикальных мер более полумиллиона британцев умрут от COVID-19.В отчете также прогнозировалось более 2 миллионов смертей в Соединенных Штатах, опять же без вмешательства. Резкие цифры побудили премьер-министра Великобритании Бориса Джонсона, у которого сам был положительный результат на COVID-19, изменить курс, прекратив общественную жизнь и приказав населению оставаться дома.
Вот сложная часть: когда верится в эпидемиологическую модель и на ее основе действуют, может показаться, что она ложная. Эти модели не являются снимками будущего. Они всегда описывают диапазон возможностей — и эти возможности очень чувствительны к нашим действиям.Через несколько дней после того, как Великобритания изменила свою политику, Нил Фергюсон, ученый, возглавлявший команду Имперского колледжа, заявил в парламенте, что ожидает, что число смертей в Великобритании превысит 20 000 человек. Резко меньшее число вызвало шок: один бывший репортер газеты « New York Times » назвал это «знаменательным поворотом», а британский таблоид « Daily Mail » опубликовал статью о том, что у ученого был «неоднородный» рекорд в моделировании. Консервативный сайт The Federalist даже заявил: «Ученый, чья модель пандемии судного дня предсказала Армагеддон, только что отошел от апокалиптических предсказаний».
Но не было ни поворота, ни обратного хода, ни даже доработки модели. Если вы читаете исходную статью, модель предлагает ряд прогнозов — от десятков тысяч до 500 000 погибших, — которые все зависят от реакции людей. Такое разнообразие потенциальных результатов, исходящих из одной эпидемиологической модели, может показаться чрезмерным и даже нелогичным. Но это неотъемлемая часть того, как они действуют, потому что эпидемии особенно чувствительны к начальным факторам и срокам, а также потому, что эпидемии растут на экспоненциально, .
Прочтите: Началась культурная война с дистанцированием от общества
Моделирование экспоненциального процесса обязательно дает широкий спектр результатов. В случае COVID-19 это связано с тем, что распространение болезни зависит от того, когда именно вы предотвратите удвоение числа случаев. Даже несколько дней могут иметь огромное значение. В Италии два схожих региона, Ломбардия и Венето, использовали разные подходы к распространению эпидемии среди населения. Оба требовали социального дистанцирования, но только Венето предпринял массовое отслеживание контактов и тестирование на раннем этапе.Несмотря на то, что все началось с очень похожих моментов, Ломбардия сейчас трагически захвачена болезнью, где погибло около 7000 человек, а Венето удалось сдержать эпидемию до нескольких сотен смертей. Точно так же в Южной Корее и Соединенных Штатах был диагностирован первый случай заболевания в один и тот же день, но Южная Корея провела масштабное отслеживание и тестирование, а Соединенные Штаты — нет. Сейчас в Южной Корее всего 162 смертельных случая, и вспышка, похоже, выровнялась, в то время как в U.По мере ускорения распространения вируса С. приближается к 4000 смертей.
Экспоненциальный рост — не единственная сложная часть эпидемиологических моделей. Эти модели также должны использовать параметры для включения переменных в уравнениях. Но откуда должны взяться эти параметры? Создателям моделей приходится работать с имеющимися у них данными, но у нового вируса, такого как тот, который вызывает COVID-19, много неизвестных.
Например, в модели Имперского колледжа используются числа из Ухани, Китай, а также некоторые ранние данные из Италии.Это разумный выбор, поскольку это крупнейшие эпицентры пандемии. Но многие из этих данных еще не установлены, и остается много вопросов. Каков уровень атаки — количество людей, заразившихся в группе, подвергшейся воздействию, например, в семье? Есть ли у выздоравливающих иммунитет? Насколько распространены бессимптомные случаи и насколько они заразны? Существуют ли суперраспространители — люди, которые, по-видимому, заражают всех, рядом с которыми они дышат, — как это было с атипичной пневмонией, и насколько они распространены? Каковы показатели ложноположительных и ложноотрицательных результатов наших тестов? И так далее, и так далее.
Чтобы модели работали, эпидемиологи также должны оценивать влияние таких вмешательств, как социальная изоляция. Но и здесь те ограниченные данные, которыми мы располагаем, несовершенны, возможно, подвергнуты цензуре, возможно, неприменимы. Например, в Китае был период, когда правительство вывозило инфицированных пациентов и даже их близких здоровых людей из домов и отправляло их в специальные карантинные палаты. Похоже, что это резко снизило количество инфекций в семье и в городе. Относительно небольшое количество инфицированных людей в Соединенных Штатах или Соединенном Королевстве были помещены в аналогичный карантин.В целом изоляция в Китае была намного серьезнее. Самолеты по-прежнему взлетают из Нью-Йорка, Нью-Джерси и других мест, даже когда мы говорим о «социальной изоляции». И еще остаются сложности. Мы даже не уверены, что можем доверять данным Китая. Статистика здравоохранения Италии, вероятно, заслуживает большего доверия, но ее культура furbizia — или нарушение правил, часть очарования страны, а также ее дисфункция — затрудняет понимание того, насколько ее результаты применимы к нашим прогнозам.
Чтение: четыре возможных графика возвращения жизни к нормальному состоянию
Устойчивость модели зависит от того, как часто ее проверяют и настраивают на основе данных и ее производительности. Например, многие модели прогнозирования президентских выборов основаны на данных о президентских выборах с 1972 года. Это все выборы, по которым у нас есть данные опросов, но это только 12 выборов, а до 2016 года только два произошли в эпоху Facebook. Итак, когда Дональд Трамп, кандидат, вероятность победы которого в 2016 году, по прогнозам, была менее вероятной, все равно победил, означало ли это, что наши модели с параметрами телевизионной эры больше не работают? Или просто случился менее вероятный, но возможный результат? (Если вы подбрасываете монету, вы будете получать четыре орла подряд примерно по одной каждые 16 попыток, что означает, что вы не можете узнать, загружена ли монета только потому, что происходит что-то, казалось бы, необычное).С этим новым коронавирусом мы многого не знаем, потому что мы никогда не тестировали свои модели, и у нас нет возможности сделать это.
Итак, если эпидемиологические модели не дают нам уверенности — а просить их об этом было бы большой ошибкой — что в них хорошего? Эпидемиология дает нам нечто более важное: способность определять и корректировать наши действия с целью формирования нашего будущего. Мы можем сделать это, обрезая катастрофические ветви дерева возможностей, которое лежит перед нами.
У эпидемиологических моделей есть «хвосты» — крайние края вероятностного спектра.Их называют хвостами, потому что визуально они представляют собой части графика, сужающиеся к расстоянию. Думайте об этих хвостах как о ветвях дерева решений. В большинстве сценариев мы оказываемся где-то в середине дерева — большой выпуклости весьма вероятных результатов, — но есть несколько ветвей в крайнем правом и крайнем левом углу, которые представляют довольно оптимистичные и довольно пессимистичные, но менее вероятные результаты. . Оптимистичный прогноз пандемии COVID-19 заключается в том, что многие люди, возможно, уже были инфицированы и выздоровели и теперь имеют иммунитет, а это означает, что мы подвергаем себя слишком интенсивному карантину.Некоторые люди выдвинули это как вероятный сценарий, и они не сумасшедшие: это действительно возможность, особенно с учетом того, что наше тестирование недостаточно широко распространено, чтобы знать. Другой хвост включает катастрофические возможности, такие как гибель десятков миллионов людей, как во время пандемии гриппа 1918 года или ВИЧ / СПИДа.
Чтение: кривая недостаточно плоская
Самая важная функция эпидемиологических моделей — это имитация, способ предвидеть наше потенциальное будущее заранее и то, как это взаимодействует с выбором, который мы делаем сегодня.С моделями COVID-19 у нас есть одна простая и неотложная цель: игнорировать все оптимистичные ветви и этот толстый ствол посередине, представляющий наиболее вероятные результаты. Вместо этого нам нужно сосредоточиться на ветвях, представляющих наихудшие результаты, и всеми силами их обрезать. Социальная изоляция снижает передачу и замедляет распространение болезни. При этом он отрубает ветви, которые представляют собой одни из худших вариантов будущего. Отслеживание контактов выявляет людей до того, как они заразят других, обрезая больше ветвей, которые представляют собой неконтролируемые катастрофы.
В начале пандемии у нас есть недостаток, заключающийся в более высокой неопределенности, но преимущество в том, что мы работаем на ранней стадии: затраты на наши действия ниже, потому что болезнь менее распространена. Обрезая дерево от ужасных, немыслимых ветвей, мы не просто выбираем путь; мы формируем сами базовые параметры, потому что сами параметры не являются фиксированными. Если наши больницы не будут переполнены, у нас будет меньше смертей и, как следствие, более низкий уровень смертности. Вот почему мы не должны увязать в оспаривании номеров модели.Вместо этого мы должны сосредоточиться на параметрах, которые мы можем изменить, и изменить их.
Каждый раз, когда Белый дом выпускает модель COVID-19, у нас возникает соблазн погрузиться в бесконечные дискуссии о планках погрешностей, ясности параметров, широком диапазоне результатов и применимости исходных данных. И у средств массовой информации может возникнуть соблазн освещать эти дискуссии, поскольку это соответствует их сценариям скачек, сказал он-она-сказал. Давай не будем. Вместо этого нам следует взглянуть на пагубные ветви нашего дерева решений и срубить их все, а затем снова отрубить.
Иногда, когда нам удается отрубить конец пессимистическому хвосту, кажется, что мы слишком остро отреагировали. Непредвиденный промах может сделать модель фальшивой. Но так бывает не всегда. Это просто означает, что мы победили. Вот почему мы моделируем.
Ссылка на поле модели | Документация Django
Полевые опции¶
Следующие аргументы доступны для всех типов полей. Все не обязательны.
пусто
¶-
Поле.
null
¶
Если True
, Django сохранит в базе данных пустые значения как NULL
.Дефолт
это Ложь
.
Избегайте использования null
в строковых полях, таких как CharField
и TextField
. Если строковое поле имеет null = True
, это означает, что у него есть два возможных значения для «нет данных»: NULL
,
и пустая строка. В большинстве случаев два возможных значения излишне
для «нет данных»; соглашение Django заключается в использовании пустой строки, а не НЕТ
. Одно исключение — когда CharField
имеет как unique = True
и blank = True
set.В этой ситуации null = True
требуется, чтобы избежать
уникальные нарушения ограничений при сохранении нескольких объектов с пустыми значениями.
Как для строковых, так и для нестроковых полей вам также потребуется
установите blank = True
, если вы хотите разрешить пустые значения в формах, так как null Параметр
влияет только на хранилище базы данных
(см. , бланк
).
Примечание
При использовании серверной части базы данных Oracle значение NULL
будет сохранено в
обозначают пустую строку независимо от этого атрибута.
пустой
¶-
Поле.
пустой
¶
Если Истина
, поле может быть пустым. По умолчанию Ложь
.
Обратите внимание, что это отличается от null
. null
is
чисто для базы данных, тогда как бланк ,
связан с проверкой. Если
поле имеет blank = True
, проверка формы позволит ввести пустое значение.
Если в поле указано blank = False
, поле будет обязательным.
варианта
¶-
Поле.
варианта
¶
Последовательность, состоящая из итераций ровно двух элементов (например, [(A, B), (A, B) ...]
) для использования в качестве вариантов для этого поля. Если выбор
учитывая, что они обеспечиваются проверкой модели и
виджет формы по умолчанию будет полем выбора с этими вариантами вместо
стандартное текстовое поле.
Первый элемент в каждом кортеже — это фактическое значение, которое должно быть установлено в модели, а второй элемент — это удобочитаемое имя.Например:
YEAR_IN_SCHOOL_CHOICES = [ ('FR', 'Первокурсник'), ('SO', 'Второкурсник'), ('JR', 'Младший'), ('SR', 'старший'), ('GR', 'Выпускник'), ]
Как правило, лучше всего определять варианты внутри класса модели и определите константу с подходящим именем для каждого значения:
из моделей импорта django.db класс Студент (модели.Модель): FRESHMAN = 'FR' SOPHOMORE = 'ТАК' JUNIOR = 'JR' СТАРШИЙ = 'SR' ВЫПУСКНИК = 'GR' YEAR_IN_SCHOOL_CHOICES = [ (ФРЕШМАН, «Первокурсник»), (СОФОМОР, "Второкурсник"), (ЮНИОР, 'Юниор'), (СТАРШИЙ, 'Старший'), (ВЫПУСКНИК, 'Выпускник'), ] year_in_school = модели.CharField ( max_length = 2, choices = YEAR_IN_SCHOOL_CHOICES, по умолчанию = FRESHMAN, ) def is_upperclass (сам): вернуть self.year_in_school в {self.JUNIOR, self.SENIOR}
Хотя вы можете определить список вариантов вне класса модели, а затем
обратитесь к нему, определяя варианты выбора и имена для каждого варианта внутри
класс модели хранит всю эту информацию вместе с классом, который ее использует,
и помогает ссылаться на варианты выбора (например, Student.SOPHOMORE
будет работать везде, где была импортирована модель Student
).
Вы также можете объединить доступные варианты в именованные группы, которые могут использовать в организационных целях:
MEDIA_CHOICES = [ ('Аудио', ( ('винил', 'винил'), ('cd', 'CD'), ) ), ('Видео', ( ('VHS', 'Видеокассета'), ('dvd', 'DVD'), ) ), ('Неизвестно Неизвестно'), ]
Первый элемент в каждом кортеже — это имя, применяемое к группе. В
второй элемент — это итерация двух кортежей, каждый из которых содержит
значение и удобочитаемое имя опции.Сгруппированные варианты могут быть
в сочетании с несгруппированными параметрами в одном списке (например, 'неизвестный' параметр
в этом примере).
Для каждого поля модели, в котором установлено варианта
, Django добавит
для получения удобочитаемого имени текущего значения поля. Видеть get_FOO_display ()
в API базы данных
документация.
Обратите внимание, что выбор может быть любым объектом последовательности — не обязательно списком или
кортеж. Это позволяет динамически создавать варианты выбора.Но если вы окажетесь
взломав варианта
, чтобы быть динамичным, вам, вероятно, лучше использовать
правильная таблица базы данных с ForeignKey
. варианта
это
предназначен для статических данных, которые не сильно меняются, если вообще не меняются.
Примечание
Новая миграция создается каждый раз при изменении порядка вариантов
.
Если blank = False
не установлен в поле вместе с по умолчанию
, тогда будет отображена метка, содержащая "---------"
с полем выбора.Чтобы переопределить это поведение, добавьте кортеж к вариантам
содержащий Нет
; например (Нет, «Ваша строка для отображения»)
.
В качестве альтернативы вы можете использовать пустую строку вместо None
, где это делает
смысл — например, на CharField
.
Перечислимые типы¶
Кроме того, Django предоставляет типы перечисления, которые вы можете подклассифицировать для определения краткий выбор:
из django.utils.translation импортируйте gettext_lazy как _ класс Студент (модели.Модель): класс YearInSchool (models.TextChoices): FRESHMAN = 'FR', _ ('Первокурсник') SOPHOMORE = 'ТАК', _ ('Второкурсник') JUNIOR = 'JR', _ ('Младший') SENIOR = 'SR', _ ('Старший') ВЫПУСКНИК = 'GR', _ ('Выпускник') year_in_school = models.CharField ( max_length = 2, choices = YearInSchool.choices, по умолчанию = YearInSchool.FRESHMAN, ) def is_upperclass (сам): вернуть self.year_in_school через { self.YearInSchool.JUNIOR, себя.Год в школе. СТАРШИЙ, }
Они работают аналогично enum
из стандартной библиотеки Python, но с некоторыми
модификаций:
- Значения членов перечисления — это кортеж аргументов, используемых при построении
конкретный тип данных. Django поддерживает добавление дополнительного строкового значения в конец
этого кортежа, которое будет использоваться как удобочитаемое имя, или
метка
. ВМетка
может быть ленивой переводимой строкой. Таким образом, в большинстве случаев член value будет двухкортежным(значение, метка)
.См. Пример ниже выбора подклассов с использованием более сложных тип данных. Если кортеж не указан или последний элемент не является (ленивым) строкаметка
автоматически создается из имени элемента. - Свойство
.label
добавляется к значениям, чтобы вернуть удобочитаемое имя. - К классам перечисления добавлен ряд настраиваемых свойств —
.choices
,.labels
,.values
и.names
— чтобы упростить для доступа к спискам этих отдельных частей перечисления.Используйте.choices
. в качестве подходящего значения для перехода квариантам выбора
в определении поля. - Использование
enum.unique ()
принудительно, чтобы гарантировать, что значения не могут быть определяется несколько раз. Этого вряд ли можно ожидать при выборе поле.
Обратите внимание, что при использовании YearInSchool.SENIOR
, YearInSchool ['SENIOR']
или YearInSchool ('SR')
для доступа или поиска членов перечисления работает должным образом, как и .name
и .значение
свойств на членах.
Если вам не нужен перевод удобочитаемых имен, вы можете они выводятся из имени члена (заменяя символы подчеркивания пробелами и используя заглавный регистр):
>>> класс Автомобиль (models.TextChoices): ... CAR = 'C' ... ГРУЗОВИК = 'Т' ... JET_SKI = 'J' ... >>> Vehicle.JET_SKI.label 'Гидроцикл'
Поскольку случай, когда значения перечисления должны быть целыми числами, чрезвычайно распространен,
Django предоставляет класс IntegerChoices
.Например:
(модели. Модель): класс Suit (models.IntegerChoices): АЛМАЗ = 1 ЛОПАТА = 2 СЕРДЦЕ = 3 КЛУБ = 4 suit = models.IntegerField (choices = Suit.choices)
Также можно использовать Enum Functional API с оговоркой что метки создаются автоматически, как указано выше:
>>> MedalType = models.TextChoices ('MedalType', 'GOLD SILVER BRONZE') >>> MedalType.choices [('ЗОЛОТО', 'Золото'), ('СЕРЕБРО', 'Серебро'), ('БРОНЗА', 'Бронза')] >>> Место = модели.IntegerChoices ('Место', 'ПЕРВАЯ ВТОРАЯ ТРЕТЬЯ') >>> Place.choices [(1, «Первый»), (2, «Второй»), (3, «Третий»)]
Если вам требуется поддержка конкретного типа данных, кроме int
или str
,
вы можете создать подкласс Choices
и требуемый конкретный тип данных, например date
для использования с DateField
:
класс MoonLandings (datetime.date, models.Choices): APOLLO_11 = 1969, 7, 20, 'Аполлон-11 (Орел)' APOLLO_12 = 1969, 11, 19, 'Аполлон-12 (Бесстрашный)' APOLLO_14 = 1971, 2, 5, 'Аполлон-14 (Антарес)' APOLLO_15 = 1971, 7, 30, 'Аполлон-15 (Сокол)' APOLLO_16 = 1972, 4, 21, 'Аполлон-16 (Орион)' APOLLO_17 = 1972, 12, 11, «Аполлон-17 (Челленджер)»
Следует помнить о некоторых дополнительных предостережениях:
Типы перечисления не поддерживают именованные группы.
Поскольку перечисление с конкретным типом данных требует, чтобы все значения совпадали тип, заменяющий пустую метку не может быть достигнуто путем создания элемента со значением
Ответ классаНет
. Вместо, установите атрибут__empty__
для класса:(models.IntegerChoices): НЕТ = 0, _ ('Нет') ДА = 1, _ ('Да') __empty__ = _ ('(Неизвестно)')
db_column
¶-
Поле.
db_column
¶
Имя столбца базы данных, используемого для этого поля. Если это не дано, Django будет использовать имя поля.
Если имя столбца вашей базы данных является зарезервированным словом SQL или содержит символы, недопустимые в именах переменных Python, в частности, дефис — это нормально. Django цитирует имена столбцов и таблиц за сцены.
db_index
¶-
Поле.
db_index
¶
Если Истина
, для этого поля будет создан индекс базы данных.
db_tablespace
¶-
Поле.
db_tablespace
¶
Имя табличного пространства базы данных, которое будет использоваться для
индекс этого поля, если это поле проиндексировано. По умолчанию используется проект DEFAULT_INDEX_TABLESPACE
, если установлено, или db_tablespace
модели, если есть. Если серверная часть этого не делает
поддержка табличных пространств для индексов, этот параметр игнорируется.
по умолчанию
¶-
Поле.
по умолчанию
¶
Значение поля по умолчанию. Это может быть значение или вызываемый объект. Если callable он будет вызываться каждый раз при создании нового объекта.
По умолчанию не может быть изменяемым объектом (экземпляр модели, список
, набор
и т. Д.),
как ссылка на тот же экземпляр этого объекта будет использоваться по умолчанию
значение во всех экземплярах новой модели. Вместо этого оберните желаемое значение по умолчанию в
вызываемый. Например, если вы хотите указать по умолчанию dict
для JSONField
, используйте функцию:
def contact_default (): верни {"email": "to1 @ example.com "} contact_info = JSONField ("ContactInfo", по умолчанию = contact_default)
лямбда
нельзя использовать для таких параметров поля, как по умолчанию
, потому что они
не могут быть сериализованы миграциями. Видеть, что
документация для других предостережений.
Для таких полей, как ForeignKey
, которые сопоставляются с экземплярами модели, по умолчанию
должно быть значением поля, на которое они ссылаются ( pk
, если to_field
) вместо экземпляров модели.
Значение по умолчанию используется, когда создаются новые экземпляры модели и значение
для поля не предусмотрено.Если поле является первичным ключом, по умолчанию используется
также используется, если в поле установлено значение Нет
.
редактируемый
¶-
Поле.
редактируемый
¶
Если False
, поле не будет отображаться в админке или любом другом
Модель Форма
. Они также пропускаются при моделировании.
Проверка. По умолчанию Истинно
.
error_messages
¶-
Поле.
error_messages
¶
Аргумент error_messages
позволяет переопределить сообщения по умолчанию, которые
поле поднимется. Передайте словарь с ключами, соответствующими сообщениям об ошибках, которые вы
хотите переопределить.
Ключи сообщений об ошибках включают null
, blank
, invalid
, invalid_choice
, unique
и unique_for_date
. Дополнительные ключи сообщений об ошибках:
указывается для каждого поля в разделе Типы полей ниже.
Эти сообщения об ошибках часто не передаются в формы. Видеть Соображения относительно error_messages модели.
help_text
¶-
Поле.
help_text
¶
Дополнительный текст «справки», отображаемый в виджете формы. Это полезно для документацию, даже если ваше поле не используется в форме.
Обратите внимание, что это значение — , а не с экранированием HTML в автоматически сгенерированных
формы. Это позволяет вам включать HTML в help_text
, если вы так
желание.Например:
help_text = "Используйте следующий формат: ГГГГ-ММ-ДД ."
В качестве альтернативы вы можете использовать обычный текст и django.utils.html.escape ()
для экранирования любых специальных символов HTML. Гарантировать
что вы избегаете любого текста справки, который может исходить от ненадежных пользователей, чтобы избежать
атака с использованием межсайтовых сценариев.
primary_key
¶-
Поле.
primary_key
¶
Если Истина
, это поле является первичным ключом для модели.
Если вы не укажете primary_key = True
для любого поля в вашей модели, Django
автоматически добавит поле для хранения первичного ключа, поэтому вам не нужно
установите primary_key = True
в любом из ваших полей, если вы не хотите переопределить
поведение первичного ключа по умолчанию. Тип автоматически созданных полей первичного ключа может
указывается для каждого приложения в AppConfig.default_auto_field
или глобально в DEFAULT_AUTO_FIELD Настройка
. Подробнее см.
Автоматические поля первичного ключа.
primary_key = True
подразумевает null = False
и unique = True
. Только один первичный ключ разрешен на
объект.
Поле первичного ключа доступно только для чтения. Если вы измените значение первичного нажмите на существующий объект, а затем сохраните его, будет создан новый объект рядом со старым.
Изменено в Django 3.2: В старых версиях автоматически создаваемые поля первичного ключа всегда AutoField
с.
уникальный
¶-
Поле.
уникальный
¶
Если Истина
, это поле должно быть уникальным во всей таблице.
Это обеспечивается на уровне базы данных и проверкой модели. Если
вы пытаетесь сохранить модель с повторяющимся значением в уникальном
поле django.db.IntegrityError
будет вызвано моделью save ()
метод.
Эта опция действительна для всех типов полей, кроме ManyToManyField
и OneToOneField
.
Обратите внимание, что когда unique
равен True
, указывать не нужно db_index
, потому что unique
подразумевает создание индекса.
unique_for_date
¶-
Поле.
unique_for_date
¶
Установите это имя DateField
или DateTimeField
на
требовать, чтобы это поле было уникальным для значения поля даты.
Например, если у вас есть поле заголовок
, в котором unique_for_date = "pub_date"
, то Django не разрешит ввод двух
записи с тем же заголовком
и pub_date .
Обратите внимание, что если вы установите это так, чтобы указывать на DateTimeField
, только дата
часть поля будет считаться. Кроме того, когда USE_TZ
является Истинно
, проверка будет выполняться в текущем часовом поясе в момент сохранения объекта.
Это обеспечивается Model.validate_unique ()
во время проверки модели
но не на уровне базы данных. Если любое ограничение unique_for_date
включает поля, которые не являются частью модели ModelForm
(для
Например, если одно из полей указано в , исключить
или editable = False
), модель .validate_unique ()
будет
пропустить проверку для этого конкретного ограничения.
unique_for_month
¶-
Поле.
unique_for_month
¶
Подобно unique_for_date
, но требует, чтобы поле было уникальным с
относительно месяца.
verbose_name
¶-
Поле.
verbose_name
¶
Удобочитаемое имя поля.Если подробное имя не указано, Django автоматически создаст его, используя имя атрибута поля, преобразовав подчеркивания на пробелы. См. Подробные имена полей.
валидаторы
¶-
Поле.
валидаторы
¶
Список валидаторов, запускаемых для этого поля. Посмотреть валидаторы документация для получения дополнительной информации.
Регистрация и получение результатов поиска¶
Поле
реализует API регистрации поиска.API можно использовать для настройки того, какие поиски доступны для класса поля, и
как поиск выполняется из поля.
Типы полей¶
AutoField
¶- класс
AutoField
( ** опции ) ¶
Поле IntegerField
, которое автоматически увеличивает
согласно имеющимся идентификаторам. Обычно вам не нужно использовать это напрямую; а
поле первичного ключа будет автоматически добавлено в вашу модель, если вы не укажете
иначе.См. Автоматические поля первичного ключа.
BigAutoField
¶- класс
BigAutoField
( ** опции ) ¶
64-битное целое число, очень похоже на AutoField
за исключением того, что это
гарантированно подходит для номеров от 1
до
72036854775807 .
BigIntegerField
¶- класс
BigIntegerField
( ** варианты ) ¶
64-битное целое число, очень похоже на IntegerField
за исключением того, что это
гарантированно подходит для номеров от -
72036854775808 до
72036854775807 .Виджет формы по умолчанию для этого поля — Числовой ввод
.
двоичное поле
¶- класс
BinaryField
( max_length = None , ** варианты ) ¶
Поле для хранения необработанных двоичных данных. Ему можно присвоить байта,
, bytearray
или memoryview
.
По умолчанию BinaryField
устанавливает редактируемый
на False
, в котором
в случае, если он не может быть включен в форму ModelForm
.
BinaryField
имеет один дополнительный необязательный аргумент:
-
BinaryField.
макс_длина
¶ Максимальная длина (в байтах) поля. Максимальная длина обязательна при проверке Django с использованием
MaxLengthValidator
.
Злоупотребление BinaryField
Хотя вы можете подумать о хранении файлов в базе данных, учтите, что в 99% случаев это плохой дизайн. Это поле , а не , заменяющее правильная обработка статических файлов.
CharField
¶- класс
CharField
( max_length = None , ** варианты ) ¶
Строковое поле для строк малого и большого размера.
Для больших объемов текста используйте TextField
.
Виджет формы по умолчанию для этого поля — TextInput
.
CharField
имеет два дополнительных аргумента:
-
CharField.
макс_длина
¶ Обязательно. Максимальная длина (в символах) поля. Max_length применяется на уровне базы данных и при проверке Django с использованием
MaxLengthValidator
.Примечание
Если вы пишете приложение, которое должно быть переносимым на несколько базы данных, вы должны знать, что существуют ограничения на
max_length
для некоторых бэкэндов. Обратитесь к бэкэнду базы данных примечания к деталям.
-
CharField.
db_collation
¶ Новое в Django 3.2.
Необязательно. Имя поля сортировки базы данных.
Примечание
Имена параметров сортировки не стандартизированы. Таким образом, это не будет переносимость между несколькими базами данных.
Оракул
Oracle поддерживает параметры сортировки, только если база данных
MAX_STRING_SIZE
Параметр инициализации установлен наEXTENDED
.
DateField
¶- class
DateField
( auto_now = False , auto_now_add = False , ** options ) ¶
Дата, представленная в Python значением datetime.дата
экз. Есть несколько дополнительных,
необязательные аргументы:
-
DateField.
auto_now
¶ Автоматически устанавливать для поля значение «Сейчас» при каждом сохранении объекта. Полезный для меток времени «последнего изменения». Обратите внимание, что текущая дата — , всегда . использовал; это не просто значение по умолчанию, которое вы можете изменить.
Поле обновляется автоматически только при вызове
Model.save ()
. Поле не обновляется при внесении обновлений в другие поля другими способами, например,QuerySet.update ()
, хотя вы можете указать собственный значение для поля в таком обновлении.
-
DateField.
auto_now_add
¶ Автоматически установить для поля значение «Сейчас» при первом создании объекта. Полезный для создания меток времени. Обратите внимание, что текущая дата — , всегда используется ; это не просто значение по умолчанию, которое вы можете изменить. Так что даже если ты установите значение для этого поля при создании объекта, оно будет проигнорировано.Если вы хотите иметь возможность изменять это поле, установите следующее вместо
auto_now_add = Истина
:
Виджет формы по умолчанию для этого поля — DateInput
. Администратор добавляет календарь JavaScript,
и ярлык для «Сегодня». Включает дополнительную ошибку invalid_date
ключ сообщения.
Опции auto_now_add
, auto_now
и default
являются взаимоисключающими.
Любая комбинация этих опций приведет к ошибке.
Примечание
Как в настоящее время реализовано, установка auto_now
или auto_now_add
на True
приведет к тому, что поле будет иметь: editable = False
и blank = True
установленный.
Примечание
Параметры auto_now
и auto_now_add
всегда будут использовать дату в
часовой пояс по умолчанию на момент
создание или обновление. Если вам нужно что-то другое, вы можете захотеть
рассмотрите возможность использования собственного вызываемого по умолчанию или переопределения вместо save ()
использования auto_now
или auto_now_add
; или используя DateTimeField
вместо DateField
и решить, как обрабатывать преобразование из
datetime к дате во время отображения.
DateTimeField
¶- class
DateTimeField
( auto_now = False , auto_now_add = False , ** options ) ¶
Дата и время, представленные в Python экземпляром datetime.datetime
.
Принимает те же дополнительные аргументы, что и DateField
.
Виджет формы по умолчанию для этого поля — одиночный DateTimeInput
. Админ использует два отдельных TextInput
виджетов с ярлыками JavaScript.
Десятичное поле
¶- class
DecimalField
( max_digits = None , decimal_places = None , ** options ) ¶
Десятичное число с фиксированной точностью, представленное в Python Десятичный экземпляр
. Он проверяет ввод, используя DecimalValidator
.
Требуется два аргумента:
-
Десятичное Поле.
max_digits
¶ Максимально допустимое количество цифр в номере.Обратите внимание, что этот номер должно быть больше или равно
decimal_places
.
-
Десятичное Поле.
десятичные_разряды
¶ Число десятичных знаков, которые нужно сохранить вместе с номером.
Например, для хранения чисел до 999
с разрешением до 2 знаков после запятой.
мест, которые вы бы использовали:
моделей.DecimalField (..., max_digits = 5, decimal_places = 2)
И для хранения чисел примерно до одного миллиарда с разрешением 10 десятичных знаков:
моделей.DecimalField (..., max_digits = 19, decimal_places = 10)
Виджет формы по умолчанию для этого поля — NumberInput
когда локализовать
— это Ложь
или TextInput
иначе.
Продолжительность Поле
¶- класс
DurationField
( ** опции ) ¶
Поле для хранения периодов времени — смоделировано на Python timedelta
. При использовании в PostgreSQL тип данных
используется интервал
, а в Oracle тип данных — ИНТЕРВАЛ ДЕНЬ (9) ДО
ВТОРОЙ (6)
.В противном случае используется bigint
микросекунд.
Примечание
Арифметика с DurationField
работает в большинстве случаев. Однако на всех
баз данных, отличных от PostgreSQL, сравнивая значение DurationField
для арифметики на экземплярах DateTimeField
не будет работать должным образом.
EmailField
¶- класс
EmailField
( max_length = 254 , ** варианты ) ¶
CharField
, который проверяет, является ли значение допустимым адресом электронной почты, используя EmailValidator
.
FileField
¶- class
FileField
( upload_to = None , max_length = 100 , ** options ) ¶
Поле для загрузки файла.
Примечание
Аргумент primary_key
не поддерживается и вызовет ошибку, если
использовал.
Имеет два необязательных аргумента:
-
FileField.
upload_to
¶ Этот атрибут позволяет задать каталог загрузки и имя файла, и может быть установлен двумя способами.В обоих случаях значение передается в
Storage.save ()
метод.Если вы укажете строковое значение или
Путь
, он может содержатьstrftime ()
форматирование, которое будет заменено датой / временем загрузки файла (чтобы загруженные файлы не заполняли заданный каталог). Например:класс MyModel (models.Model): # файл будет загружен в MEDIA_ROOT / uploads upload = models.FileField (upload_to = 'uploads /') # или... # файл будет сохранен в MEDIA_ROOT / uploads / 2015/01/30 загрузить = модели.FileField (upload_to = 'загрузки /% Y /% m /% d /')
Если вы используете значение по умолчанию
FileSystemStorage
, строковое значение будет добавлен к вашему путиMEDIA_ROOT
для формирования местоположения на локальная файловая система, в которой будут храниться загруженные файлы. Если вы используете другое хранилище, проверьте документацию на это хранилище, чтобы узнать, как оно обрабатываетupload_to
.upload_to
также может быть вызываемым, например функцией. Это будет вызывается для получения пути загрузки, включая имя файла.Этот вызываемый должен принять два аргумента и вернуть путь в стиле Unix (с косой чертой) для передачи в систему хранения. Два аргумента:Аргумент Описание экземпляр
Экземпляр модели, в которой
FileField
определено. В частности, это частный случай, когда текущий файл прикрепляется.В большинстве случаев этот объект не был сохранены в базе данных, поэтому, если он использует по умолчанию
AutoField
, может еще не иметь значение для его поля первичного ключа .имя файла
Имя файла, которое изначально было присвоено файл. Это может быть учтено или не учтено. при определении конечного пути назначения. Например:
def user_directory_path (экземпляр, имя файла): # файл будет загружен в MEDIA_ROOT / user_
/ вернуть "user_ {0} / {1}".формат (instance.user.id, имя файла) класс MyModel (models.Model): upload = models.FileField (upload_to = user_directory_path)
-
FileField.
склад
¶ Объект хранения или вызываемый объект, возвращающий объект хранения. Этот обрабатывает хранение и поиск ваших файлов. См. Управление файлами для получения подробной информации о том, как предоставить этот объект.
Изменено в Django 3.1:Добавлена возможность предоставлять вызываемый объект.
Виджет формы по умолчанию для этого поля — ClearableFileInput
.
Использование FileField
или ImageField
(см. Ниже) в модели
занимает несколько шагов:
- В файле настроек вам нужно определить
MEDIA_ROOT
как полный путь к каталогу, в котором Django будет хранить загруженные файлы. (Для повышения производительности эти файлы не хранятся в базе данных.) ОпределитеMEDIA_URL
в качестве основного общедоступного URL-адреса этого каталога. Убедись что этот каталог доступен для записи учетной записи пользователя веб-сервера. - Добавьте
FileField
илиImageField
к вашей модели, определяя параметрupload_to
, чтобы указать подкаталогMEDIA_ROOT
для использования для загруженных файлов. - Все, что будет храниться в вашей базе, — это путь к файлу
(относительно
MEDIA_ROOT
). Скорее всего, вы захотите использовать удобствоurl
атрибут предоставлено Django. Например, если вашImageField
называетсяmug_shot
, вы можете получить абсолютный путь к вашему изображению в шаблоне с помощью{{объект.mug_shot.url}}
.
Например, ваш MEDIA_ROOT
установлен на '/ home / media'
и
Для параметра upload_to
установлено значение 'фото /% Y /% m /% d'
. Модель '% Y /% m /% d'
часть upload_to
— это форматирование strftime ()
; '% Y'
— год из четырех цифр, '% m'
— месяц из двух цифр и '% d'
—
двузначный день. Если вы загрузите файл 15 января 2007 г., он будет сохранен в
каталог / home / media / photos / 2007/01/15
.
Если вы хотите получить на диске имя загруженного файла или
размер, вы можете использовать имя
и размер
атрибутов соответственно; для большего
информацию о доступных атрибутах и методах см. File
class reference and the Managing files
руководство по теме.
Примечание
Файл сохраняется как часть сохранения модели в базе данных, поэтому фактическая на имя файла, используемое на диске, нельзя полагаться до тех пор, пока модель не будет сохранено.
Относительный URL загруженного файла можно получить с помощью url
атрибут. Внутри,
это вызывает метод url ()
для
базовый класс Storage
.
Обратите внимание, что всякий раз, когда вы имеете дело с загруженными файлами, вы должны уделять пристальное внимание куда вы их загружаете и какого это типа файлы, чтобы избежать дыры в безопасности. Проверить все загруженные файлы , чтобы убедиться, что файлы что вы думаете о них. Например, если вы слепо позволяете кому-то загружать файлы, без проверки в каталог, который находится в документе вашего веб-сервера root, то кто-нибудь может загрузить сценарий CGI или PHP и выполнить этот сценарий с помощью посетив его URL на вашем сайте.Не позволяйте этого.
Также обратите внимание, что даже загруженный файл HTML, поскольку он может быть выполнен браузер (но не сервером) может представлять угрозу безопасности, эквивалентно атакам XSS или CSRF.
Экземпляры FileField
создаются в вашей базе данных как varchar
столбцы с максимальной длиной по умолчанию 100 символов. Как и в других областях, вы
может изменить максимальную длину с помощью аргумента max_length
.
FileField
и FieldFile
¶- класс
FieldFile
¶
Когда вы получаете доступ к FileField
на модели, вы
учитывая экземпляр FieldFile
в качестве прокси для доступа к базовому
файл.
API FieldFile
отражает API File
,
с одним ключевым отличием: Обернутый классом объект не обязательно
оболочка для встроенного файлового объекта Python. Вместо этого это обертка вокруг
результат Storage.open ()
метод, который может быть объектом File
, или это может быть
реализация пользовательского хранилища File
API.
В дополнение к API, унаследованному от файла
, например read ()
и write ()
, FieldFile
включает несколько методов, которые
может использоваться для взаимодействия с базовым файлом:
Предупреждение
Два метода этого класса, save ()
и delete ()
, по умолчанию для сохранения объекта модели
связанный FieldFile
в базе данных.
-
FieldFile.
название
¶
Имя файла, включая относительный путь от корня Хранилище
связанных Поле Файлов
.
-
FieldFile.
путь
¶
Свойство только для чтения для доступа к пути к локальной файловой системе файла путем вызова path ()
метод базового Хранилище
кл.
-
FieldFile.
размер
¶
Результат базового метода Storage.size ()
.
-
FieldFile.
URL
¶
Свойство только для чтения для доступа к относительному URL-адресу файла путем вызова url ()
метод базового Хранилище
кл.
-
FieldFile.
открыто
(режим = ‘rb’ ) ¶
Открывает или повторно открывает файл, связанный с этим экземпляром, в указанном режим
.В отличие от стандартного метода open () Python , он не возвращает
файловый дескриптор.
Поскольку базовый файл открывается неявно при доступе к нему, он может быть
нет необходимости вызывать этот метод, за исключением сброса указателя на базовый
файл или изменить режим
.
-
FieldFile.
закрыть
() ¶
Действует как стандартный метод Python file.close ()
и закрывает файл
связанный с этим экземпляром.
-
FieldFile.
сохранить
( имя , содержимое , сохранить = True ) ¶
Этот метод принимает имя файла и содержимое файла и передает их в хранилище.
class для поля, затем связывает сохраненный файл с полем модели.
Если вы хотите вручную связать данные файла с FileField
экземпляров на вашей модели, save ()
используется для сохранения данных файла.
Принимает два обязательных аргумента: имя,
- имя файла, и содержимое
- объект, содержащий содержимое файла.В
необязательный аргумент save
определяет, является ли экземпляр модели
сохраняется после изменения файла, связанного с этим полем. По умолчанию Правда
.
Обратите внимание, что аргумент content
должен быть экземпляром django.core.files.File
, а не встроенный файловый объект Python.
Вы можете построить Файл
из существующего
Объект файла Python, подобный этому:
из файла импорта django.core.files # Открыть существующий файл с помощью встроенного в Python open () f = open ('/ путь / к / привет.Мир') myfile = Файл (f)
Или вы можете построить его из строки Python следующим образом:
из django.core.files.base импортировать ContentFile myfile = ContentFile ("привет, мир")
Для получения дополнительной информации см. Управление файлами.
-
FieldFile.
удалить
( сохранить = True ) ¶
Удаляет файл, связанный с этим экземпляром, и очищает все атрибуты на
поле. Примечание. Этот метод закроет файл, если он будет открыт, когда
Вызывается delete ()
.
Необязательный аргумент save
определяет, является ли экземпляр модели
сохраняется после удаления файла, связанного с этим полем. По умолчанию Правда
.
Обратите внимание, что при удалении модели связанные файлы не удаляются. Если тебе нужно чтобы очистить потерянные файлы, вам нужно будет обработать это самостоятельно (например, с настраиваемой командой управления, которую можно запустить вручную или по расписанию периодически через, например, cron).
FilePathField
¶- class
FilePathField
( path = '' , match = None , recursive = False , allow_files = True , allow_folders = False , max_length = 100 , ** options ) ¶
A CharField
, выбор которого ограничен именами файлов в определенных
каталог в файловой системе.Имеет несколько особых аргументов, первый из которых требуется :
-
FilePathField.
путь
¶ Обязательно. Абсолютный путь файловой системы к каталогу, из которого
FilePathField
должен получить свой выбор. Пример:"/ home / images"
.путь
также может быть вызываемым, например функцией для динамической установки путь во время выполнения. Пример:импорт ОС из настроек импорта django.conf из джанго.модели импорта БД def images_path (): вернуть os.path.join (settings.LOCAL_FILE_DIR, 'images') класс MyModel (models.Model): file = models.FilePathField (путь = путь_к изображениям)
-
FilePathField.
совпадение
¶ Необязательно. Регулярное выражение в виде строки,
FilePathField
будет использовать для фильтрации имен файлов. Обратите внимание, что регулярное выражение будет применено к базовое имя файла, а не полный путь. Пример:"foo. * \. Txt $"
, что будет сопоставьте файл с именемfoo23.txt
, но неbar.txt
илиfoo23.png
.
-
FilePathField.
рекурсивный
¶ Необязательно. Либо
True
, либоFalse
. По умолчаниюЛожь
. Указывает должны ли быть включены все подкаталогипути
-
FilePathField.
allow_files
¶ Необязательно. Либо
True
, либоFalse
.По умолчаниюИстинно
. Указывает должны ли быть включены файлы в указанном месте. Либо это, либоallow_folders
должен бытьTrue
.
-
FilePathField.
allow_folders
¶ Необязательно. Либо
True
, либоFalse
. По умолчаниюЛожь
. Указывает должны ли быть включены папки в указанном месте. Либо это илиallow_files
должен бытьTrue
.
Одна потенциальная проблема заключается в том, что совпадение
применяется к
базовое имя файла, а не полный путь. Итак, этот пример:
FilePathField (путь = "/ home / images", match = "foo. *", Рекурсивный = True)
… будет соответствовать /home/images/foo.png
, но не /home/images/foo/bar.png
потому что совпадение
применяется к базовому имени файла
( foo.png
и bar.png
).
Экземпляры FilePathField
создаются в вашей базе данных как varchar
столбцы с максимальной длиной по умолчанию 100 символов.Как и в других областях, вы
может изменить максимальную длину с помощью аргумента max_length
.
FloatField
¶- класс
FloatField
( ** опции ) ¶
Число с плавающей запятой, представленное в Python экземпляром float
.
Виджет формы по умолчанию для этого поля - NumberInput
когда локализовать
- это Ложь
или TextInput
иначе.
FloatField
против DecimalField
Класс FloatField
иногда путают с DecimalField
класс. Хотя оба они представляют собой действительные числа, они
представляют эти числа по-разному. FloatField
использует Python float
тип внутри, а DecimalField
использует тип Python Decimal
. Для
информацию о различиях между ними см. в документации Python
для десятичного модуля
.
ImageField
¶- class
ImageField
( upload_to = None , height_field = None , width_field = None , max_length = 100 , ** параметры ) ¶
Наследует все атрибуты и методы из FileField
, но также
проверяет, является ли загруженный объект действительным изображением.
В дополнение к специальным атрибутам, доступным для FileField
, ImageField
также имеет атрибуты высота
и ширина
.
Чтобы упростить запросы по этим атрибутам, ImageField
имеет два дополнительных
необязательные аргументы:
-
ImageField.
высота_поле
¶ Имя поля модели, которое будет автоматически заполнено высотой image каждый раз при сохранении экземпляра модели.
-
ImageField.
ширина_поля
¶ Имя поля модели, которое будет автоматически заполнено шириной image каждый раз при сохранении экземпляра модели.
Требуется библиотека подушек.
Экземпляры ImageField
создаются в вашей базе данных как varchar
столбцы с максимальной длиной по умолчанию 100 символов. Как и в других областях, вы
может изменить максимальную длину с помощью аргумента max_length
.
Виджет формы по умолчанию для этого поля - ClearableFileInput
.
Целочисленное поле
¶- класс
IntegerField
( ** варианты ) ¶
Целое число.Значения от -2147483648
до 2147483647
безопасны во всех
базы данных, поддерживаемые Django.
Он использует MinValueValidator
и MaxValueValidator
для проверки ввода на основе
на значениях, которые поддерживает база данных по умолчанию.
Виджет формы по умолчанию для этого поля - NumberInput
когда локализовать
- это Ложь
или TextInput
иначе.
GenericIPAddressField
¶- class
GenericIPAddressField
(протокол = 'both' , unpack_ipv4 = False , ** options ) ¶
Адрес IPv4 или IPv6 в строковом формате (например,грамм. 192.0.2.30
или 2a02: 42fe :: 4
). Виджет формы по умолчанию для этого поля - Текстовый ввод
.
Нормализация IPv6-адресов соответствует RFC 4291 # section-2.2 section 2.2,
включая использование формата IPv4, предложенного в пункте 3 этого раздела, например :: ffff: 192.0.2.0
. Например, 2001: 0 :: 0: 01
будет нормализовано до 2001 :: 1
и :: ffff: 0a0a: 0a0a
до :: ffff: 10.10.10.10
. Все персонажи
преобразуются в нижний регистр.
-
GenericIPAddressField.
протокол
¶ Ограничивает допустимые входы указанным протоколом. Допустимые значения:
'оба'
(по умолчанию),'IPv4'
. или'IPv6'
. При сопоставлении регистр не учитывается.
-
GenericIPAddressField.
unpack_ipv4
¶ Распаковывает сопоставленные адреса IPv4, например
:: ffff: 192.0.2.1
. Если эта опция включена, этот адрес будет распакован в192.0.2.1
. По умолчанию отключено. Можно использовать только когдапротокол
установлен на'оба'
.
Если вы разрешаете пустые значения, вы должны разрешить пустые значения, так как пустые значения сохраняются как нулевые.
JSONField
¶- класс
JSONField
(кодировщик = Нет , декодер = Нет , ** варианты ) ¶
Новое в Django 3.1.
Поле для хранения данных в кодировке JSON.В Python данные представлены в
Собственный формат Python: словари, списки, строки, числа, логические значения и Нет
.
JSONField
поддерживается в MariaDB 10.2.7+, MySQL 5.7.8+, Oracle,
PostgreSQL и SQLite (с включенным расширением JSON1).
-
JSONField.
энкодер
¶ Необязательный подкласс
json.JSONEncoder
для сериализации типов данных не поддерживается стандартным сериализатором JSON (например,грамм.datetime.datetime
илиUUID
). Например, вы можете использоватьDjangoJSONEncoder
класс.По умолчанию
json.JSONEncoder
.
-
JSONField.
декодер
¶ Необязательный подкласс
json.JSONDecoder
для десериализации значения извлекается из базы данных. Значение будет в формате, выбранном пользовательский кодировщик (чаще всего строка). Для вашей десериализации может потребоваться учтите тот факт, что вы не можете быть уверены в типе ввода.Для Например, вы рискуете вернутьdatetime
, которое на самом деле было строка, которая случайно оказалась в том же формате, который был выбран дляdatetime
с.По умолчанию
json.JSONDecoder
.
Если вы зададите полю по умолчанию
, убедитесь, что это
неизменяемый объект, такой как str
, или вызываемый объект, который возвращает свежий
изменяемый объект каждый раз, например dict
или функция. Обеспечение изменяемого
объект по умолчанию, например default = {}
или default = []
разделяет один объект
между всеми экземплярами модели.
Чтобы запросить JSONField
в базе данных, см. Запрос JSONField.
Индексирование
Index
и Field.db_index
оба создают
Индекс B-дерева, который не особенно полезен при запросе JSONField
.
Только в PostgreSQL вы можете использовать GinIndex
, что лучше подходит.
Пользователи PostgreSQL
PostgreSQL имеет два собственных типа данных на основе JSON: json
и jsonb
.
Основное различие между ними в том, как они хранятся и как их можно хранить.
запрошен.Поле PostgreSQL json
сохраняется как исходная строка.
представление JSON и должно быть декодировано на лету при запросе
на основе ключей. Поле jsonb
хранится на основе фактической структуры
JSON, который позволяет индексировать. Компромисс - небольшая дополнительная стоимость.
при записи в поле jsonb
. JSONField
использует jsonb
.
Пользователи Oracle
Oracle Database не поддерживает хранение скалярных значений JSON.Только JSON
объекты и массивы (представленные в Python с использованием dict
и список
) поддерживаются.
NullBooleanField
¶- класс
NullBooleanField
( ** варианты ) ¶
Как BooleanField
с null = True
.
Не рекомендуется, начиная с версии 3.1: NullBooleanField
не рекомендуется в пользу BooleanField (null = True)
.
PositiveBigIntegerField
¶- класс
PositiveBigIntegerField
( ** варианты ) ¶
Новое в Django 3.1.
Как PositiveIntegerField
, но допускает только значения ниже определенного
(зависящая от базы данных) точка. Значения от 0
до
72036854775807 являются
безопасно во всех базах данных, поддерживаемых Django.
PositiveIntegerField
¶- класс
PositiveIntegerField
( ** варианты ) ¶
Подобно IntegerField
, но должно быть либо положительным, либо нулевым ( 0
).Значения от 0
до 2147483647
безопасны во всех базах данных, поддерживаемых
Джанго. Значение 0
принято по соображениям обратной совместимости.
PositiveSmallIntegerField
¶- класс
PositiveSmallIntegerField
( ** варианты ) ¶
Как PositiveIntegerField
, но допускает значения только ниже определенного
(зависящая от базы данных) точка. Значения от 0
до 32767
безопасны во всех
базы данных, поддерживаемые Django.
SlugField
¶- класс
SlugField
( max_length = 50 , ** варианты ) ¶
Slug — газетный термин. Слаг — это краткое обозначение чего-либо, содержащие только буквы, цифры, знаки подчеркивания или дефисы. Они обычно используются в URL-адресах.
Как и CharField, вы можете указать max_length
(прочтите примечание
о переносимости базы данных и max_length
в этом разделе,
тоже).Если max_length
не указан, Django будет использовать
длина по умолчанию 50.
Подразумевает настройку Field.db_index от
до True
.
Часто бывает полезно автоматически предварительно заполнить SlugField на основе значения
какой-то другой ценности. Вы можете сделать это автоматически в админке, используя предварительно заполненные_поля
.
Он использует validate_slug
или validate_unicode_slug
для проверки.
-
SlugField.
allow_unicode
¶ Если
Истина
, поле принимает буквы Юникода в дополнение к ASCII письма. По умолчаниюЛожь
.
SmallAutoField
¶- класс
SmallAutoField
( ** опции ) ¶
Как AutoField
, но допускает только значения ниже определенного
(зависит от базы данных) предел. Значения от 1
до 32767
безопасны во всех
базы данных, поддерживаемые Django.
SmallIntegerField
¶- класс
SmallIntegerField
( ** варианты ) ¶
Подобно IntegerField
, но допускает значения только ниже определенного
(зависящая от базы данных) точка. Значения от -32768
до 32767
безопасны во всех
базы данных, поддерживаемые Django.
TextField
¶- класс
TextField
( ** варианты ) ¶
Большое текстовое поле.Виджет формы по умолчанию для этого поля — Textarea
.
Если вы укажете атрибут max_length
, он будет отражен в Textarea
виджет автоматически сгенерированного поля формы.
Однако это не применяется на уровне модели или базы данных. Использовать CharField
для этого.
-
Текстовое поле.
db_collation
¶ Новое в Django 3.2.
Имя поля сортировки базы данных.
Примечание
Имена параметров сортировки не стандартизированы.Таким образом, это не будет переносимость между несколькими базами данных.
Оракул
Oracle не поддерживает параметры сортировки для
TextField
.
TimeField
¶- class
TimeField
( auto_now = False , auto_now_add = False , ** options ) ¶
Время, представленное в Python экземпляром datetime.time
. Принимает то же самое
параметры автозаполнения как DateField
.
Виджет формы по умолчанию для этого поля — TimeInput
.
Администратор добавляет несколько ярлыков JavaScript.
UUIDField
¶- класс
UUIDField
( ** варианты ) ¶
Поле для хранения универсальных уникальных идентификаторов. Использует Python UUID
кл. При использовании в PostgreSQL это сохраняется в uuid
, в противном случае — char (32)
.
Универсальные уникальные идентификаторы — хорошая альтернатива AutoField
для primary_key
.База данных не будет генерировать UUID для вас, поэтому
рекомендуется использовать по умолчанию
:
импорт uuid из моделей импорта django.db класс MyUUIDModel (models.Model): id = models.UUIDField (primary_key = True, по умолчанию = uuid.uuid4, editable = False) # другое поле
Обратите внимание, что вызываемый объект (без скобок) передается в по умолчанию
,
не экземпляр UUID
.
Поиск в PostgreSQL
Используя iexact
, содержит
, icontains
, начинается с
, истартс с
, заканчивается с
, или iends с
поисками в PostgreSQL не работают для значений без
дефисы, потому что PostgreSQL хранит их в виде типа данных uuid с дефисом.
Создание форм из моделей | Документация Django
Модель Форма
¶- класс
Модель Форма
¶
Если вы создаете приложение на основе базы данных, скорее всего, у вас будут формы,
карта близко к моделям Django. Например, у вас может быть BlogComment
модель, и вы хотите создать форму, позволяющую людям отправлять комментарии. В этом
В этом случае было бы излишним определять типы полей в вашей форме, потому что
вы уже определили поля в своей модели.
По этой причине Django предоставляет вспомогательный класс, который позволяет создавать форму
класс из модели Django.
Например:
>>> из django.forms import ModelForm >>> из статьи импорта myapp.models # Создайте класс формы. >>> класс ArticleForm (ModelForm): ... класс Meta: ... model = Статья ... fields = ['pub_date', 'headline', 'content', 'reporter'] # Создание формы для добавления статьи. >>> form = ArticleForm () # Создание формы для изменения существующей статьи.>>> article = Article.objects.get (pk = 1) >>> form = ArticleForm (instance = article)
Типы полей¶
Созданный класс Form
будет иметь поле формы для каждого поля модели.
указывается в порядке, указанном в полях атрибута
.
Каждое поле модели имеет соответствующее поле формы по умолчанию. Например, CharField
в модели отображается как CharField
в форме. Модель ManyToManyField
представлен как MultipleChoiceField
.Здесь
полный список преобразований:
Как и следовало ожидать, поля модели ForeignKey
и ManyToManyField типы — особые случаи:
-
ForeignKey
представленdjango.forms.ModelChoiceField
, который представляет собойChoiceField
, выбор которого — модельQuerySet
. -
ManyToManyField
представленdjango.forms.ModelMultipleChoiceField
, который являетсяMultipleChoiceField
, для которого выбрана модельQuerySet
.
Кроме того, каждое поле сгенерированной формы имеет следующие атрибуты:
- Если поле модели имеет
blank = True
, тоrequired
устанавливается наЛожь
в поле формы. В противном случае требуется= Истина
. - Метка
поля формы
установлена наverbose_name
модели. поле с заглавной буквы. - Поле формы
help_text
установлено наhelp_text
модели. поле. - Если в поле модели задано
варианта выбора
, то виджетполя формы
будет установлен на. Выберите
, с выбором из поля модели.варианта
. Варианты выбора обычно включают пустой вариант, который выбрано по умолчанию. Если поле является обязательным, это заставляет пользователя сделайте выбор. Пустой вариант не будет включен, если модель поле имеетblank = False
и явное значениепо умолчанию
(по умолчанию вместо этого будет изначально выбрано значение
).
Наконец, обратите внимание, что вы можете переопределить поле формы, используемое для данной модели. поле. См. Раздел «Замена полей по умолчанию» ниже.
Полный пример¶
Рассмотрим такой набор моделей:
из моделей импорта django.db из django.forms импортировать ModelForm TITLE_CHOICES = [ ('MR', 'Мистер'), («МИССИС», «Миссис»), ("MS", "Ms."), ] Автор класса (models.Model): name = models.CharField (max_length = 100) title = models.CharField (max_length = 3, choices = TITLE_CHOICES) Birth_date = модели.DateField (blank = True, null = True) def __str __ (сам): вернуть self.name Книга классов (models.Model): name = models.CharField (max_length = 100) авторы = models.ManyToManyField (Автор) класс AuthorForm (ModelForm): класс Мета: model = Автор fields = ['name', 'title', 'Birth_date'] класс BookForm (ModelForm): класс Мета: model = Книга fields = ['имя', 'авторы']
С этими моделями подклассы ModelForm
, указанные выше, будут примерно
эквивалентно этому (единственная разница заключается в методе save ()
, который
мы обсудим через минуту.):
из форм импорта django класс AuthorForm (forms.Form): name = forms.CharField (max_length = 100) title = forms.CharField ( max_length = 3, widget = forms.Select (choices = TITLE_CHOICES), ) Birth_date = forms.DateField (обязательно = False) класс BookForm (forms.Form): name = forms.CharField (max_length = 100) авторы = forms.ModelMultipleChoiceField (queryset = Author.objects.all ())
Валидация на форму модели
¶ Проверка модели ModelForm
:
- Проверка формы
- Проверка экземпляра модели
Как и при проверке нормальной формы, проверка формы модели запускается неявно
при вызове is_valid ()
или доступе к ошибки атрибута
и явно при вызове full_clean ()
, хотя, как правило, вы не будете использовать последний метод в
упражняться.
Проверка модели
( Model.full_clean ()
) запускается из формы
шаг проверки, сразу после вызова метода формы clean ()
.
Предупреждение
Процесс очистки изменяет экземпляр модели, переданный в ModelForm
конструктор различными способами. Например, любые поля даты на
модели преобразуются в объекты фактических дат. Неудачная проверка может
оставить базовый экземпляр модели в несогласованном состоянии и, следовательно,
не рекомендуется использовать его повторно.
Переопределение метода clean ()
Вы можете переопределить метод clean ()
в модельной форме, чтобы обеспечить дополнительные
проверка так же, как и в обычной форме.
Экземпляр формы модели, прикрепленный к объекту модели, будет содержать экземпляр
атрибут, который дает своим методам доступ к этому конкретному экземпляру модели.
Предупреждение
Метод ModelForm.clean ()
устанавливает флаг, который делает модель
этап валидации подтверждает уникальность модели
поля, помеченные как уникальные
, уникальные_всего
или unique_for_date | месяц | год
.
Если вы хотите переопределить метод clean ()
и сохранить его
Для проверки необходимо вызвать метод clean ()
родительского класса.
Взаимодействие с проверкой модели¶
Как часть процесса проверки, ModelForm
вызовет clean ()
для каждого поля вашей модели, имеющего соответствующее поле в вашей форме.
Если вы исключили какие-либо поля модели, проверка не будет выполняться для этих полей.
поля. См. Документацию по проверке формы
для получения дополнительной информации о том, как работают очистка и проверка полей.
Метод модели clean ()
будет вызываться перед проверкой уникальности.
сделал. См. Дополнительные сведения в разделе Проверка объектов.
на крючок модели clean ()
.
Соображения относительно модели
error_messages
¶ Сообщения об ошибках, определенные в поле формы
или на уровне
форма Мета-уровень всегда принимает
приоритет над сообщениями об ошибках, определенными в
Модель поле
уровень.
Сообщения об ошибках, определенные в полях модели
, используются только тогда, когда ValidationError
возникает на этапе проверки модели, и соответствующие сообщения об ошибках не определены в
уровень формы.
Вы можете переопределить сообщения об ошибках из NON_FIELD_ERRORS
, вызванные моделью
проверка путем добавления ключа NON_FIELD_ERRORS
к словарю error_messages
внутреннего класса ModelForm
Meta
:
из django.core.exceptions import NON_FIELD_ERRORS из django.forms импортировать ModelForm класс ArticleForm (ModelForm): класс Мета: error_messages = { NON_FIELD_ERRORS: { 'unique_toght': "% (field_labels)% (model_name) s не уникальны.", } }
Метод
save ()
¶ Каждый ModelForm
также имеет метод save ()
. Этот метод создает и сохраняет
объект базы данных из данных, привязанных к форме. Подкласс модели ModelForm
может принять существующий экземпляр модели в качестве ключевого слова аргумент instance
; если
это предусмотрено, save ()
обновит этот экземпляр. Если его нет, save ()
создаст новый экземпляр указанной модели:
>>> из myapp.модели импортные статьи >>> из myapp.forms импортировать ArticleForm # Создать экземпляр формы из данных POST. >>> f = ArticleForm (request.POST) # Сохранить новый объект статьи из данных формы. >>> new_article = f.save () # Создайте форму для редактирования существующей статьи, но используйте # Данные POST для заполнения формы. >>> a = Article.objects.get (pk = 1) >>> f = ArticleForm (request.POST, instance = a) >>> f.save ()
Обратите внимание, что если форма не была проверена, вызов save ()
сделает это путем проверки форма.ошибки
. Ошибка ValueError
будет вызвана, если данные в форме
не проверяется — то есть, если form.errors
оценивается как True
.
Если дополнительное поле не отображается в данных формы, итоговая модель
экземпляр использует поле модели по умолчанию
, если
есть один для этого поля. Это поведение не применяется к полям, которые используют Флажок Вход
, CheckboxSelectMultiple
, или SelectMultiple
(или любой настраиваемый виджет, метод value_omarded_from_data ()
всегда возвращает Ложь
), поскольку флажок снят и не выбран <выбрать несколько>
не отображаются в данных при отправке HTML-формы.Используйте настраиваемое поле формы или
виджет, если вы разрабатываете API и хотите использовать резервное поведение по умолчанию для
поле, которое использует один из этих виджетов.
Этот метод save ()
принимает необязательный аргумент ключевого слова commit
, который
принимает либо True
, либо False
. Если вы позвоните по номеру , сохраните ()
с помощью commit = False
, тогда он вернет объект, который еще не был сохранен в
база данных. В этом случае вы должны вызвать save ()
для полученного
экземпляр модели.Это полезно, если вы хотите выполнить индивидуальную обработку на
объект перед его сохранением, или если вы хотите использовать один из специализированных
варианты сохранения модели. фиксация
— это True
по умолчанию.
Другой побочный эффект использования commit = False
виден, когда ваша модель
отношение «многие ко многим» с другой моделью. Если в вашей модели много ко многим
отношение и вы указываете commit = False
при сохранении формы, Django не может
немедленно сохраните данные формы для отношения «многие ко многим».Это потому что
невозможно сохранить данные «многие ко многим» для экземпляра, пока он не
существует в базе данных.
Чтобы обойти эту проблему, каждый раз, когда вы сохраняете форму, используя commit = False
,
Django добавляет метод save_m2m ()
в ваш подкласс ModelForm
. После
вы вручную сохранили экземпляр, созданный формой, вы можете вызвать save_m2m ()
для сохранения данных формы «многие ко многим». Например:
# Создайте экземпляр формы с данными POST.>>> f = AuthorForm (request.POST) # Создать, но не сохранять новый экземпляр автора. >>> new_author = f.save (фиксация = False) # Каким-то образом изменить автора. >>> new_author.some_field = 'какое-то_значение' # Сохраняем новый экземпляр. >>> new_author.save () # Теперь сохраните данные "многие ко многим" для формы. >>> f.save_m2m ()
Вызов save_m2m ()
требуется только в том случае, если вы используете save (commit = False)
.
Когда вы используете save ()
в форме, все данные, включая данные «многие ко многим» —
сохраняется без необходимости каких-либо дополнительных вызовов методов.Например:
# Создайте экземпляр формы с данными POST. >>> a = Автор () >>> f = AuthorForm (request.POST, instance = a) # Создайте и сохраните новый экземпляр автора. Больше ничего делать не нужно. >>> new_author = f.save ()
Кроме методов save ()
и save_m2m ()
, работает модель ModelForm
.
точно так же, как и любые другие формы формы
. Например, is_valid () Метод
используется для проверки действительности, метод is_multipart ()
используется, чтобы определить, требует ли форма загрузки файлов из нескольких частей (и
отсюда ли запрос.ФАЙЛЫ
необходимо передать в форму) и т. Д. См.
Привязка загруженных файлов к форме для получения дополнительной информации.
Выбор полей для использования¶
Настоятельно рекомендуется явно указать все поля, которые должны быть
редактируется в форме с использованием атрибута fields
. Невыполнение этого требования может легко
привести к проблемам с безопасностью, когда форма неожиданно позволяет пользователю установить определенные
полей, особенно когда в модель добавляются новые поля. В зависимости от того, как
форма отображается, проблема может даже не отображаться на веб-странице.
Альтернативный подход — автоматическое включение всех полей или удалить только некоторые. Известно, что этот фундаментальный подход гораздо менее безопасен. и привел к серьезным атакам на крупных веб-сайтах (например, GitHub).
Однако есть два ярлыка для случаев, когда вы можете гарантировать эти соображения безопасности к вам не относятся:
Установите для атрибута
fields
специальное значение'__all__'
, чтобы указать что должны использоваться все поля в модели.Например:из django.forms import ModelForm класс AuthorForm (ModelForm): класс Мета: model = Автор fields = '__all__'
Установите для атрибута
exclude
внутреннего классаMeta
ModelForm
значение список полей, которые нужно исключить из формы.Например:
класс PartialAuthorForm (ModelForm): класс Мета: model = Автор exclude = ['название']
Так как модель
Author
имеет 3 поляимя
,заголовок
иBirth_date
, в результате появятся поляname
иBirth_date
присутствуют в форме.
Если используется любой из них, порядок отображения полей в форме будет следующим.
порядок полей, определенных в модели, с экземплярами ManyToManyField
появляется последним.
Кроме того, Django применяет следующее правило: если вы установите editable = False
на
поле модели, любая форма , созданная из модели с помощью ModelForm
не будет
включить это поле.
Примечание
Любые поля, не включенные в форму по вышеуказанной логике
не будет устанавливаться методом save ()
формы.Кроме того, если вы
вручную добавить исключенные поля обратно в форму, они не будут
инициализироваться из экземпляра модели.
Django предотвратит любую попытку сохранить неполную модель, поэтому, если
модель не позволяет отсутствующим полям быть пустыми и делает
не указывать значение по умолчанию для отсутствующих полей, любая попытка save ()
ModelForm
с отсутствующими полями завершится ошибкой. К
чтобы избежать этого сбоя, вы должны создать экземпляр своей модели с начальным
значения для недостающих, но обязательных полей:
автор = Автор (title = 'Mr') form = PartialAuthorForm (запрос.POST, instance = author) form.save ()
В качестве альтернативы вы можете использовать save (commit = False)
и установить вручную
любые дополнительные обязательные поля:
форма = PartialAuthorForm (request.POST) author = form.save (commit = False) author.title = 'Мистер' author.save ()
Подробнее об использовании см. В разделе о сохранении форм. сохранить (фиксация = False)
.
Замена полей по умолчанию¶
Типы полей по умолчанию, как описано в таблице типов полей выше, являются
разумные значения по умолчанию.Если в вашей модели есть DateField
, скорее всего, вы
хотите, чтобы это было представлено как DateField
в вашей форме. Но модель Форма
дает вам возможность изменять поле формы для данной модели.
Чтобы указать настраиваемый виджет для поля, используйте атрибут widgets
внутренний Мета
класс. Это должен быть словарь, отображающий имена полей для виджета.
классы или экземпляры.
Например, если вы хотите CharField
для атрибута name
Автор
должен быть представлен вместо значения по умолчанию
, вы можете переопределить виджет поля:
из django.формы импортируют ModelForm, Textarea from myapp.models import Автор класс AuthorForm (ModelForm): класс Мета: model = Автор fields = ('имя', 'титул', 'дата_рождения') widgets = { 'name': Textarea (attrs = {'cols': 80, 'rows': 20}), }
Словарь виджетов
принимает экземпляры любого виджета (например,
Textarea (...)
) или классы (например, Textarea
). Обратите внимание, что виджеты
словарь игнорируется для поля модели с непустым атрибутом choices
.В этом случае вы должны переопределить поле формы, чтобы использовать другой виджет.
Аналогичным образом можно указать метки
, help_texts
и error_messages
атрибуты внутреннего класса Meta
, если вы хотите дополнительно настроить поле.
Например, если вы хотите настроить формулировку всех пользовательских строк для
имя
поле:
из django.utils.translation импортируйте gettext_lazy как _ класс AuthorForm (ModelForm): класс Мета: model = Автор fields = ('имя', 'титул', 'дата_рождения') label = { 'name': _ ('Писатель'), } help_texts = { 'name': _ ('Полезный справочный текст.'), } error_messages = { 'имя': { 'max_length': _ ("Имя автора слишком длинное."), }, }
Вы также можете указать field_classes
, чтобы настроить тип полей
создается формой.
Например, если вы хотите использовать MySlugFormField
для ярлыка
поле, вы можете сделать следующее:
из django.forms import ModelForm из статьи импорта myapp.models класс ArticleForm (ModelForm): класс Мета: model = Статья fields = ['pub_date', 'headline', 'content', 'reporter', 'slug'] field_classes = { 'slug': MySlugFormField, }
Наконец, если вам нужен полный контроль над полем, включая его тип,
валидаторы, требуются и т. д.- это можно сделать, декларативно указав
поля, как в обычной форме
.
Если вы хотите указать валидаторы поля, вы можете сделать это, определив
поле декларативно и установив его валидаторы
параметр:
из django.forms import CharField, ModelForm из статьи импорта myapp.models класс ArticleForm (ModelForm): slug = CharField (валидаторы = [validate_slug]) класс Мета: model = Статья fields = ['pub_date', 'headline', 'content', 'reporter', 'slug']
Примечание
Когда вы явно создаете экземпляр такого поля формы, важно
понять, как связаны ModelForm
и обычная Form
.
ModelForm
— это обычная Form
, которая может автоматически генерировать
определенные поля. Поля, которые создаются автоматически, зависят от
содержимое класса Meta
и какие поля уже были
определяется декларативно. По сути, ModelForm
будет генерировать поля только
пропущены в форме, или, другими словами, поля, которые не были
определяется декларативно.
Поля, определенные декларативно, остаются как есть, поэтому любые настройки
сделано для Мета атрибутов
, таких как виджеты
, метки
, help_texts
,
или error_messages
игнорируются; они применимы только к полям, которые
генерируется автоматически.
Точно так же декларативно определенные поля не отображают свои атрибуты, такие как
max_length
или требуется
от соответствующей модели. Если хотите
поддерживать поведение, указанное в модели, необходимо установить соответствующие
аргументы явно при объявлении поля формы.
Например, если модель Артикул
выглядит так:
Артикул (модели. Модель): заголовок = models.CharField ( max_length = 200, null = True, blank = True, help_text = 'Свободно используйте каламбуры', ) контент = модели.Текстовое поле()
, и вы хотите выполнить некоторую настраиваемую проверку для заголовка , заголовок
, сохраняя
значения blank
и help_text
, как указано, вы можете определить
СтатьяФорма
как это:
класс ArticleForm (МодельForm): заголовок = MyFormField ( max_length = 200, required = False, help_text = 'Свободно используйте каламбуры', ) класс Мета: model = Статья fields = ['заголовок', 'содержание']
Вы должны убедиться, что тип поля формы может использоваться для установки
содержимое соответствующего поля модели.Когда они несовместимы,
вы получите ValueError
, поскольку неявное преобразование не происходит.
Дополнительную информацию см. В документации по полям формы. о полях и их аргументах.
Включение локализации полей¶
По умолчанию поля в ModelForm
не локализуют свои данные. К
включить локализацию полей, можно использовать localized_fields
атрибут класса Meta
.
>>> из django.формы импортировать ModelForm >>> from myapp.models import Author >>> класс AuthorForm (ModelForm): ... класс Meta: ... model = Автор ... localized_fields = ('дата_рождения',)
Если для localized_fields
установлено специальное значение '__all__'
, все поля
будет локализован.
Форма наследования¶
Как и в случае с базовыми формами, вы можете расширять и повторно использовать ModelForms
путем наследования
их. Это полезно, если вам нужно объявить дополнительные поля или дополнительные методы в
родительский класс для использования в ряде форм, производных от моделей.Например,
используя предыдущую форму ArticleForm
класс:
>>> класс EnhancedArticleForm (ArticleForm): ... def clean_pub_date (сам): ... ...
Это создает форму, которая ведет себя идентично форме ArticleForm
, за исключением
некоторая дополнительная проверка и очистка для поля pub_date
.
Вы также можете создать подкласс родительского внутреннего класса Meta
, если хотите изменить
Meta.fields
или Meta.исключить
списков:
>>> class RestrictedArticleForm (EnhancedArticleForm): ... класс Meta (ArticleForm.Meta): ... exclude = ('тело',)
Это добавляет дополнительный метод из EnhancedArticleForm
и изменяет
оригинал ArticleForm.Meta
для удаления одного поля.
Однако следует отметить несколько моментов.
-
Применяются обычные правила разрешения имен Python. Если у вас несколько баз классы, которые объявляют внутренний класс
Meta
, только первый будет использовал.Это означает, что мета ребенка, если она существует, в противном случае
Мета
первого родителя и т. Д. -
Можно наследовать как форму
Form
, так и формуModelForm
одновременно, однако вы должны убедиться, чтоModelForm
появляется первым в MRO. Это потому что эти классы полагаются на разные метаклассы, а класс может иметь только один метакласс. -
Можно декларативно удалить
Поле
, унаследованное от родительского класса установка имени какНет
для подкласса.Вы можете использовать этот метод только для отказа от поля, определенного декларативно. родительским классом; это не помешает метаклассу
ModelForm
генерировать поле по умолчанию. Чтобы отказаться от использования полей по умолчанию, см. Выбор полей для использования.
Предоставление начальных значений¶
Как и в обычных формах, можно указать исходные данные для форм с помощью
указание начального параметра
при создании формы. Исходный
значения, предоставленные таким образом, переопределят оба начальных значения из поля формы
и значения из прикрепленного экземпляра модели.Например:
>>> article = Article.objects.get (pk = 1) >>> article.headline 'Мой Заголовок' >>> form = ArticleForm (initial = {'заголовок': 'Начальный заголовок'}, instance = article) >>> form ['заголовок']. value () "Начальный заголовок"
Заводская функция ModelForm¶
Вы можете создавать формы из данной модели, используя автономную функцию
modelform_factory ()
вместо использования класса
определение. Это может быть удобнее, если у вас мало настроек
сделать:
>>> из django.формы импорта modelform_factory >>> из книги импорта myapp.models >>> BookForm = modelform_factory (Книга, поля = ("автор", "название"))
Это также можно использовать для внесения изменений в существующие формы, например, с помощью указание виджетов, которые будут использоваться для данного поля:
>>> из django.forms import Textarea >>> Form = modelform_factory (Книга, форма = BookForm, ... widgets = {"title": Textarea ()})
Поля для включения могут быть указаны с помощью полей
и исключить
аргументы ключевого слова или соответствующие атрибуты во внутренней ModelForm
Мета
класс.См. Форму модели
Выбор полей для использования
документация.
… или включить локализацию для определенных полей:
>>> Form = modelform_factory (Автор, form = AuthorForm, localized_fields = ("Birth_date",))
Наборы форм
-
класс
модели.
BaseModelFormSet
¶
Как и обычные наборы форм, Django предоставляет пару
расширенных классов наборов форм, чтобы сделать работу с моделями Django более удобной
удобный.Давайте повторно воспользуемся моделью Author
сверху:
>>> из django.forms import modelformset_factory >>> from myapp.models import Author >>> AuthorFormSet = modelformset_factory (Автор, fields = ('имя', 'заголовок'))
Использование полей
ограничивает набор форм для использования только заданных полей.
В качестве альтернативы вы можете воспользоваться методом отказа, указав, какие поля следует
исключить:
>>> AuthorFormSet = modelformset_factory (Автор, exclude = ('Birth_date',))
Это создаст набор форм, способный работать с данными, связанными с
с моделью Author
.Он работает так же, как и обычный набор форм:
>>> formset = AuthorFormSet () >>> печать (набор форм)
Примечание
При использовании многотабличного наследования формы
сгенерированный фабрикой набора форм будет содержать поле родительской ссылки (по умолчанию
) вместо поля id
.
Изменение набора запросов¶
По умолчанию, когда вы создаете набор форм из модели, набор форм будет использовать
queryset, который включает все объекты в модели (например,грамм.,
Автор.objects.all ()
). Вы можете переопределить это поведение, используя
запрос
аргумент:
>>> formset = AuthorFormSet (queryset = Author.objects.filter (name__startswith = 'O'))
В качестве альтернативы вы можете создать подкласс, который устанавливает self.queryset
в
__init__
:
из django.forms import BaseModelFormSet from myapp.models import Автор класс BaseAuthorFormSet (BaseModelFormSet): def __init __ (self, * args, ** kwargs): супер().__init __ (* аргументы, ** kwargs) self.queryset = Автор.objects.filter (name__startswith = 'O')
Затем передайте свой класс BaseAuthorFormSet
функции factory:
>>> AuthorFormSet = modelformset_factory ( ... Автор, fields = ('name', 'title'), formset = BaseAuthorFormSet)
Если вы хотите вернуть набор форм, который не включает ни один из ранее существовавших экземпляров модели, вы можете указать пустой QuerySet:
>>> AuthorFormSet (queryset = Author.objects.none ())
Изменение формы¶
По умолчанию, когда вы используете modelformset_factory
, модельная форма будет
может быть создан с помощью modelform_factory ()
.
Часто бывает полезно указать настраиваемую форму модели. Например,
вы можете создать настраиваемую форму модели с настраиваемой проверкой:
класс AuthorForm (forms.ModelForm): класс Мета: model = Автор fields = ('имя', 'заголовок') def clean_name (сам): # настраиваемая проверка для поля имени ...
Затем передайте форму модели в функцию factory:
AuthorFormSet = modelformset_factory (Автор, форма = AuthorForm)
Не всегда необходимо определять пользовательскую форму модели. В
modelformset_factory Функция
имеет несколько аргументов, которые
перешли на modelform_factory
, которые описаны ниже.
Включение локализации для полей с
localized_fields
¶
С помощью параметра localized_fields
можно включить локализацию для
поля в форме.
>>> AuthorFormSet = modelformset_factory ( ... Автор, fields = ('name', 'title', 'Birth_date'), ... localized_fields = ('дата_рождения',))
Если для localized_fields
установлено специальное значение '__all__'
, все поля
будет локализован.
Предоставление начальных значений¶
Как и в случае с обычными наборами форм, можно указать начальные данные для форм в наборе форм, указав начальное значение
параметр при создании экземпляра класса набора форм модели, возвращаемого
modelformset_factory ()
.Однако с моделью
наборов форм, начальные значения применяются только к дополнительным формам, те, которые не
прикреплен к существующему экземпляру модели. Если длина начальная
превышает
количество лишних форм, лишние исходные данные игнорируются. Если лишний
формы с исходными данными не изменяются пользователем, не проходят валидацию или
сохранено.
Сохранение объектов в наборе форм¶
Как и в случае с ModelForm
, вы можете сохранить данные как объект модели. Готово
с помощью метода save ()
набора форм:
# Создайте экземпляр набора форм с данными POST.>>> formset = AuthorFormSet (request.POST) # Предполагая, что все в порядке, сохраните данные. >>> экземпляры = formset.save ()
Метод save ()
возвращает экземпляры, которые были сохранены в
база данных. Если данные данного экземпляра не изменились в связанных данных,
экземпляр не будет сохранен в базе данных и не будет включен в возврат
значение ( экземпляра
в приведенном выше примере).
Когда поля отсутствуют в форме (например, потому что они были
исключено), эти поля не будут установлены методом save ()
.Ты можешь найти
больше информации об этом ограничении, которое также справедливо для обычных
ModelForms
, в Выбор полей для использования.
Пройдите commit = False
, чтобы вернуть несохраненные экземпляры модели:
# не сохранять в базу >>> экземпляры = formset.save (фиксация = False) >>> например в примерах: ... # делаем что-нибудь с экземпляром ... instance.save ()
Это дает вам возможность прикреплять данные к экземплярам перед их сохранением.
в базу данных.Если ваш набор форм содержит ManyToManyField
, вы также
необходимо вызвать formset.save_m2m ()
, чтобы гарантировать отношения "многие ко многим"
сохраняются правильно.
После вызова save ()
ваш модельный набор форм будет иметь три новых атрибута.
содержащий изменения набора форм:
-
модели.
измененные_объекты
¶
-
модели.
удаленные_объекты
¶
-
модели.BaseModelFormSet.
новые_объекты
¶
Ограничение количества редактируемых объектов¶
Как и в обычных наборах форм, вы можете использовать параметры max_num
и extra
в modelformset_factory ()
, чтобы ограничить количество
отображаются дополнительные формы.
max_num
не запрещает отображение существующих объектов:
>>> Автор.objects.order_by ('имя'), <Автор: Поль Верлен>, <Автор: Уолт Уитмен>]> >>> AuthorFormSet = modelformset_factory (Автор, fields = ('name',), max_num = 1) >>> formset = AuthorFormSet (queryset = Автор.objects.order_by ('имя')) >>> [x.name для x в formset.get_queryset ()] ["Шарль Бодлер", "Поль Верлен", "Уолт Уитмен"]
Кроме того, extra = 0
не препятствует созданию новых экземпляров модели, как вы можете
добавить дополнительные формы с помощью JavaScript
или отправьте дополнительные данные POST. В наборах форм еще нет функций для режима «только редактирование», предотвращающего создание новых экземпляров.
Если значение max_num
больше, чем количество существующих связанных
объектов, в набор форм будет добавлено до дополнительных пустых форм,
пока общее количество форм не превышает
max_num
:
>>> AuthorFormSet = modelformset_factory (Автор, fields = ('name',), max_num = 4, extra = 2) >>> formset = AuthorFormSet (queryset = Автор.objects.order_by ('имя')) >>> для формы в наборе форм: ... печать (form.as_table ())
max_num
значение Нет
(по умолчанию) устанавливает верхний предел числа
отображаемых форм (1000).На практике это эквивалентно неограниченному количеству.
Использование модельного набора форм на виде¶
Наборы форм очень похожи на наборы форм. Допустим, мы хотим представить
набор форм для редактирования Автор
экземпляров модели:
из django.forms импортировать modelformset_factory из django.shortcuts import render from myapp.models import Автор def manage_authors (запрос): AuthorFormSet = modelformset_factory (Автор, fields = ('имя', 'заголовок')) если request.method == 'POST': formset = AuthorFormSet (запрос.POST, request.FILES) если formset.is_valid (): formset.save () # сделай что-нибудь. еще: formset = AuthorFormSet () вернуть визуализацию (запрос, 'manage_authors.html', {'formset': formset})
Как видите, логика представления модельного набора форм не сильно отличается
чем у «нормального» набора форм. Единственная разница в том, что мы называем
formset.save ()
для сохранения данных в базе данных. (Это было описано
выше, в разделе Сохранение объектов в наборе форм.)
Замена
clean ()
на ModelFormSet
¶
Как и в случае с ModelForms
, по умолчанию метод clean ()
ModelFormSet
проверит, что ни один из элементов в наборе форм не нарушает
уникальные ограничения вашей модели ( unique
, unique_to together
или
unique_for_date | месяц | год
). Если вы хотите переопределить метод clean ()
на ModelFormSet
и поддерживать эту проверку, вы должны вызвать родительский
метод класса clean
:
из django.формы импортируют BaseModelFormSet класс MyModelFormSet (BaseModelFormSet): def clean (self): супер (). чистый () # пример настраиваемой проверки в формах в наборе форм для формы в self.forms: # проверка вашего пользовательского набора форм ...
Также обратите внимание, что к тому времени, когда вы дойдете до этого шага, отдельные экземпляры модели
уже созданы для каждого Форма
. Изменение значения в
form.cleaned_data
недостаточно, чтобы повлиять на сохраненное значение.Если хочешь
чтобы изменить значение в ModelFormSet.clean ()
, вы должны изменить
форма. Экземпляр
:
из django.forms import BaseModelFormSet класс MyModelFormSet (BaseModelFormSet): def clean (self): супер (). чистый () для формы в self.forms: name = form.cleaned_data ['имя']. upper () form.cleaned_data ['имя'] = имя # обновить значение экземпляра. form.instance.name = имя
Использование настраиваемого набора запросов¶
Как было сказано ранее, вы можете переопределить набор запросов по умолчанию, используемый моделью. набор форм:
из django.формы импорта modelformset_factory из django.shortcuts import render from myapp.models import Автор def manage_authors (запрос): AuthorFormSet = modelformset_factory (Автор, fields = ('имя', 'заголовок')) если request.method == "POST": formset = AuthorFormSet ( request.POST, request.FILES, queryset = Author.objects.filter (name__startswith = 'O'), ) если formset.is_valid (): formset.save () # Сделай что-нибудь. еще: formset = AuthorFormSet (queryset = Автор.objects.filter (name__startswith = 'O')) вернуть визуализацию (запрос, 'manage_authors.html', {'formset': formset})
Обратите внимание, что мы передаем аргумент queryset
как в POST , так и в GET
.
случаи в этом примере.
Использование набора форм в шаблоне¶
Есть три способа визуализировать набор форм в шаблоне Django.
Во-первых, вы можете позволить набору форм делать большую часть работы:
Во-вторых, вы можете визуализировать набор форм вручную, но пусть форма будет обрабатывать сам:
Когда вы вручную визуализируете формы, обязательно визуализируйте управление форма, как показано выше. См. Документацию по форме управления.
В-третьих, вы можете визуализировать каждое поле вручную:
Если вы выберете этот третий метод и не перебираете поля с
цикл {% for%}
, вам необходимо отобразить поле первичного ключа.Например,
если вы визуализировали поля name
и age
модели:
Обратите внимание, как нам нужно явно отрендерить {{form.id}}
. Это гарантирует, что
модельный набор форм в случае POST
будет работать правильно.(Этот пример
предполагает первичный ключ с именем id
. Если вы явно определили свой
первичный ключ, который не называется id
, убедитесь, что он отображается.)
Наборы встроенных форм¶
-
класс
модели.
BaseInlineFormSet
¶
Встроенные наборы форм - это небольшой уровень абстракции над наборами форм модели. Эти упростить работу со связанными объектами через внешний ключ. Предполагать у вас есть эти две модели:
из django.модели импорта БД Автор класса (models.Model): name = models.CharField (max_length = 100) Книга классов (models.Model): author = models.ForeignKey (Автор, on_delete = models.CASCADE) title = models.CharField (max_length = 100)
Если вы хотите создать набор форм, позволяющий редактировать книги, принадлежащие конкретного автора, вы можете сделать это:
>>> из django.forms импортировать inlineformset_factory >>> BookFormSet = inlineformset_factory (Автор, Книга, поля = ('название',)) >>> author = Автор.objects.get (name = 'Майк Ройко') >>> formset = BookFormSet (экземпляр = автор)
Префикс BookFormSet
- 'book_set'
.
( <название модели> _set
). Если Книга
ForeignKey
до Автор
имеет
related_name
, который используется вместо этого.
Переопределение методов в
InlineFormSet
¶
При переопределении методов в InlineFormSet
вы должны создать подкласс
BaseInlineFormSet
, а не
BaseModelFormSet
.
Например, если вы хотите переопределить clean ()
:
из django.forms импорт BaseInlineFormSet класс CustomInlineFormSet (BaseInlineFormSet): def clean (self): супер (). чистый () # пример настраиваемой проверки в формах в наборе форм для формы в self.forms: # проверка вашего пользовательского набора форм ...
См. Также Переопределение clean () в ModelFormSet.
Затем, когда вы создаете свой встроенный набор форм, передайте необязательный аргумент
набор форм
:
>>> из django.импорт форм inlineformset_factory >>> BookFormSet = inlineformset_factory (Автор, Книга, fields = ('название',), ... formset = CustomInlineFormSet) >>> author = Author.objects.get (name = 'Майк Ройко') >>> formset = BookFormSet (экземпляр = автор)
Более одного внешнего ключа для одной модели¶
Если ваша модель содержит более одного внешнего ключа для одной и той же модели, вы
необходимо устранить неоднозначность вручную, используя fk_name
. Например, рассмотрим
следующая модель:
класс Дружба (мод.Модель): from_friend = models.ForeignKey ( Друг, on_delete = models.CASCADE, related_name = 'from_friends', ) to_friend = models.ForeignKey ( Друг, on_delete = models.CASCADE, related_name = 'друзья', ) length_in_months = models.IntegerField ()
Чтобы решить эту проблему, вы можете использовать fk_name
для
inlineformset_factory ()
:
>>> FriendshipFormSet = inlineformset_factory (Друг, Дружба, fk_name = 'from_friend', ... fields = ('to_friend', 'length_in_months'))
Использование встроенного набора форм в представлении¶
Вы можете захотеть предоставить представление, которое позволяет пользователю редактировать связанные объекты. модели. Вот как это сделать:
def manage_books (запрос, author_id): author = Author.objects.get (pk = author_id) BookInlineFormSet = inlineformset_factory (Автор, Книга, поля = ('название',)) если request.method == "POST": formset = BookInlineFormSet (request.POST, request.ФАЙЛЫ, экземпляр = автор) если formset.is_valid (): formset.save () # Сделай что-нибудь. Обычно должно заканчиваться перенаправлением. Например: вернуть HttpResponseRedirect (author.get_absolute_url ()) еще: formset = BookInlineFormSet (экземпляр = автор) вернуть рендеринг (запрос, 'manage_books.html', {'formset': formset})
Обратите внимание, как мы передаем экземпляр
в случаях POST
и GET
.
COVID-19 и ложная наука о компьютерных моделях:
Как победить их в суде
TASA ID: 2409
Америка и весь мир опустошили свою экономику на основе ложной науки о компьютерных моделях, которые привели к миллионам потенциальных смертей от респираторного вируса, известного как COVID-19.Только в Америке экономический ущерб малому бизнесу и фермерам исчисляется триллионами долларов. Как это произошло?Британский ученый запрограммировал компьютерную модель, согласно которой 2,2 миллиона американцев умрут от COVID-19 вместе с 500 000 британцев. Эта компьютерная модель вызвала панику, за ней последовали компьютерные модели, созданные докторами университетских наук в Америке, предсказывающие смерть от 1,2 миллиона до 800 000 американцев. Когда эти компьютерные модели были ошибочными, когда фактические случаи смерти не соответствовали прогнозам, компьютерные модели были перепрограммированы, чтобы показать меньшее количество прогнозируемых смертей.Эти прогнозируемые смерти снова оказались ошибочными, и компьютерные модели были снова перепрограммированы, чтобы показать еще меньшее количество прогнозируемых смертей. На данный момент различные компьютерные модели выводят данные о смертях от COVID-19 в диапазоне от 20 000 до 80 000 американских смертей.
Компьютерные модели - это скрытая секретная наука, запрограммированная кем-либо с полностью или частично базовыми необработанными данными и алгоритмами, используемыми для программирования этих компьютерных моделей, скрытыми от исследования. Отсутствие прозрачности у программистов компьютерных моделей требует демонстрации их работы, демонстрации своих алгоритмов и всех исходных необработанных данных, которые они использовали для программирования этих компьютерных моделей, чтобы все это могло быть подтверждено другими учеными.На данный момент никто не видел исходных данных и алгоритмов, которые использовались для программирования британской компьютерной модели на COVID-19. Никто не видел исходных данных и алгоритмов, которые использовались для программирования американских компьютерных моделей на COVID-19.
Были ли эти компьютерные модели запрограммированы обманным путем? Были ли ошибки в их программировании, которые привели к предсказанию массовых смертей? Очевидно, что программирование всех этих компьютерных моделей искажало опасность COVID-19.Если были использованы какие-либо данные, были ли эти данные проверены на точность или просто слепо верили в истину программист? Были ли использованы какие-либо базовые данные, или кто-то просто запрограммировал компьютер для вывода того, что им нужно? Были ли использованные данные недостоверными и / или неподдающимися проверке?
Почему кто-то должен слепо доверять результатам компьютерной модели, не видя всех базовых данных и алгоритмов для проверки точности этой компьютерной модели? Насколько широко распространена секретная наука о компьютерных моделях и как часто они используются в суде для решения дел? Это гораздо чаще, чем вы думаете.
Например, Роберт М. Шавел, доктор философии, опытный эксперт по ожидаемой продолжительности жизни, мнение которого было очень благоприятным для его клиентов, использовал бы компьютерную модель в качестве основы для вычисления ожидаемой продолжительности жизни. В деле Bonin v. Jarrett, et al., Округ Рокуолл, штат Техас. ученый был нанят адвокатом противоположной стороны, который объяснил адвокатам секретную науку о компьютерных моделях, в результате чего судья распорядился использовать все базовых необработанных данных, которые д-р.Шавелле использовал в компьютерной модели, на которую он опирался, чтобы получить свое мнение о продолжительности жизни.
Ответом доктора Шавелле было заявление, в котором говорилось: «При составлении экспертного отчета я не рассматривал, не полагался и не использовал исходные данные исследования. Я никогда не указывал в своем отчете, что я рассматривал, полагался или использовал необработанные данные в упомянутом исследовании ». После этого доктор Шавелль был отозван как свидетельствующий о суде экспертом вместе со своим мнением о продолжительности жизни.
Насколько распространены скрытые данные компьютерных моделей? Должен ли поверенный предполагать, что каждая компьютерная модель является мошеннической и не имеет научной основы, но запрограммирована на вывод того, что желает программист? 1 апреля 2020 года Апелляционный суд второго округа постановил, что компьютерные модели, лежащие в основе стандартов чистых автомобилей Агентства по охране окружающей среды, не могут скрыть исходные исходные данные и алгоритмы от проверки и проверки.Все исходные необработанные данные и алгоритмы должны быть подготовлены для изучения и проверки.
Компьютерные модели COVID-19, которые ошибочно выводят прогнозы массовых смертей, созданы обманным путем? Запрос или постановление суда для всех исходных необработанных данных и алгоритмов, которые используются для построения любой компьютерной модели, необходимы любому адвокату противоположной стороны. Следует предположить, что каждая компьютерная модель построена так, чтобы выводить все, что программист хочет, чтобы эта компьютерная модель выводила.Честная наука всегда показывает всю их работу, поэтому не возникнет вопросов о достоверности этой науки.
Чтобы упростить задачу, если вы столкнетесь с наукой в зале суда, подумайте о классе алгебры в средней школе. Вы должны показать все свои работы, иначе вы не сдадите урок. Здесь действует тот же принцип. Каждый адвокат должен исходить из того, что секретная наука о компьютерных моделях - ложная наука. Это должно быть стандартом во всех юридических вопросах.
Заявление об ограничении ответственности по статье TASA
В этой статье обсуждаются вопросы, представляющие общий интерес, и не дается никаких конкретных юридических или деловых советов, касающихся каких-либо конкретных обстоятельств.Прежде чем действовать на основании какой-либо информации, вам следует получить соответствующий совет у юриста или другого квалифицированного специалиста.
Эту статью нельзя копировать, изменять, распространять, сохранять, включать в другой документ или веб-сайт или иным образом изменять без разрешения TASA и автора ( TASA Id #: 2409 ). Свяжитесь с marketing@tasanet.com по любым вопросам.
Снижение числа ложноположительных результатов скрининговых МРТ у женщин с очень плотной грудью с использованием моделей прогнозирования, основанных на данных исследования DENSE
Актуальность проблемы Высокая плотность груди увеличивает риск рака груди и снижает чувствительность маммографии.Дополнительный скрининг МРТ улучшает выявление рака, но увеличивает количество ложноположительных результатов. Таким образом, необходимы методы, позволяющие отличить истинно-положительные результаты МРТ-скрининга от ложноположительных. Цель Построить модели прогнозирования, основанные на клинических характеристиках и результатах МРТ, чтобы снизить количество ложноположительных результатов скрининговых МРТ у женщин с чрезвычайно плотной грудью. Материалы и методы. Клинические характеристики и результаты МРТ у голландских участников скрининга рака груди (возрастной диапазон от 50 до 75 лет) с положительными результатами первого раунда скрининга МРТ (система отчетов и данных 3, 4 или 5 визуализации груди) после нормальной скрининговой маммографии с чрезвычайно плотной грудью (категория плотности Volpara 4) были проспективно собраны в рамках рандомизированного контролируемого исследования плотных тканей и раннего скрининга новообразований молочной железы (DENSE) с декабря 2011 года по ноябрь 2015 года.В этом вторичном анализе модели прогнозирования были построены с использованием многомерного логистического регрессионного анализа, чтобы отличить истинно-положительные результаты скрининга МРТ от ложноположительных. Результаты Среди 454 женщин (средний возраст, 52 года; межквартильный размах, 50-57 лет) с положительным результатом МРТ в первом раунде дополнительного скрининга МРТ, у 79 был диагностирован рак груди (истинно-положительные результаты), а у 375 - ложно- положительные результаты МРТ. Модель полного прогнозирования (область под кривой рабочих характеристик приемника [AUC], 0.88; 95% ДИ: 0,84, 0,92), основанный на всех собранных клинических характеристиках и результатах МРТ, мог предотвратить 45,5% (95% ДИ: 39,6, 51,5) ложноположительных отзывов и 21,3% (95% ДИ: 15,7, 28,3) доброкачественных биопсий без пропуска рака. Модель, основанная исключительно на доступных результатах МРТ и возрасте, имела сопоставимые характеристики (AUC, 0,84; 95% ДИ: 0,79, 0,88; P = 0,15) и могла предотвратить 35,5% (95% ДИ: 30,4, 41,1) ложноположительных результатов скрининга МРТ и 13,0% (95% ДИ: 8.8, 18.6) доброкачественных биопсий. Заключение Модели прогнозирования, основанные на клинических характеристиках и результатах МРТ, могут быть полезны для снижения частоты ложноположительных результатов скрининговых МРТ в первом раунде и частоты доброкачественной биопсии у женщин с чрезвычайно плотной грудью. Регистрационный номер клинического исследования NCT01315015 © RSNA, 2021 К этой статье доступны дополнительные материалы в Интернете.