Добавление формы в панель администратора DJANGO
Решение задачи добавления своих (custom fields) полей в формы администрирования (admin form) в админке site admin django.
Статьи и заметки про язык Python и его библиотеки.
Решение задачи добавления своих (custom fields) полей в формы администрирования (admin form) в админке site admin django.
В первой части мы разобрали, основы того, как происходит вызов классов в иерархии Python. Давайте же рассмотрим обещанные интересности. Отсутствие обращения к родителю Изменим пример из первой части. Пускай класс B полностью реализует всю функциональность без обращения к родителю (я не призываю так делать без четкого осознания, что вы делаете…
Давайте разберемся как работает вызов иерархических методов в Python. Для начала самый простой вариант (в котором все понятно): Есть иерархия классов (А это корень иерархии), заним потомки B и C, и самый низ иерархии D и E. Суть примера в том, что каждый из потомков вносит какое то изменение в…
На старте разработки неплохо настроить MEDIA и STATIC отображения. Для этого немного изменяем конфиги проекта. В файл urls.py в конец добавляем строки:
1 |
if settings.DEBUG:<br> urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)<br> urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) |
В файл settings.py
1 |
STATIC_URL = '/static/'<br>STATICFILES_DIRS = [<br> os.path.join(BASE_DIR, 'static'),<br>]<br><br>MEDIA_URL = '/media/'<br>MEDIA_ROOT = os.path.join(BASE_DIR, 'media') |
Еще один момент если есть желание вынести шаблоны за пределы отдельных приложений, а сделать каталог на весь проект, то тогда следующая конфигурация (она…
Вы используете свойства (@property) в классах?Удобная штука, скажу я вам! Но работают они только для инстансов класса. Вот простой пример: class A:@propertydef prop(self):return 10 Создаём класс и получаем значение свойства >>> a = A()>>> a.prop10 А что будет если вызвать свойство у класса >>> A.prop<property object at 0x000…318>Как сделать подобие…
Иногда хочется чтобы в качестве объекта передачи данных был удобный класс но не хочется (или нет возможности) писать сераиализатор в JSON для него. Идеально было бы сделать класс, который сам умел бы сериализоваться в JSON дефолтным модулем без указания дополнительных сериализаторов.Как это сделать? Стандартный модуль JSON умеет правильно сериализовать стандартные…
Как то раз мне понадобилось начальные данные в форму создания. Это решилось довольно просто переопределением метода get_initial
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MessageDialogView</span>(<span class="hljs-params">CreateView</span>):</span> <span class="hljs-string">""" show html form fragment """</span> model = Message template_name = <span class="hljs-string">"message.html"</span> <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">get_initial</span>(<span class="hljs-params">self</span>):</span> <span class="hljs-built_in">super</span>(MessageDialogView, self).get_initial() alert = Alert.objects.get(pk=self.request.POST.get(<span class="hljs-string">"alert_id"</span>)) user = self.request.user self.initial = {<span class="hljs-string">"alert"</span>:alert.<span class="hljs-built_in">id</span>, <span class="hljs-string">"user"</span>:user.<span class="hljs-built_in">id</span>, <span class="hljs-string">"message"</span>:<span class="hljs-string">"test"</span>} <span class="hljs-keyword">return</span> self.initial <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">post</span>(<span class="hljs-params">self, request, *args, **kwargs</span>):</span> <span class="hljs-built_in">super</span>(MessageDialogView, self).post(request, *args, **kwargs) form_class = self.get_form_class() form = self.get_form(form_class) context = self.get_context_data(form=form) <span class="hljs-keyword">return</span> self.render_to_response(context) |
В питоне есть модуль subprocess который предоставляет средства запуска внешних процессов и выполнения команд оболочки. Для выполнения некоторых команд без необходимости перехвата их вывода можно использовать функцию run.
1 2 3 4 |
import subprocess result = subprocess.run(['dir','c:\\'], shell=True) print(result.returncode); |
В результате выполнения кода выше будет выведен статус возврата команды оповещающий о результате ее выполнения (с ошибкой или без). Стоит также…
Series Структура/объект Series представляет из себя объект, похожий на одномерный массив (питоновский список, например), но отличительной его чертой является наличие ассоциированных меток, т.н. индексов, вдоль каждого элемента из списка. Такая особенность превращает его в ассоциативный массив или словарь в Python. У объекта Series есть атрибуты через которые можно получить список…
Класс ModelForm Если вы создаете приложение, управляемое базой данных, скорее всего, у вас будут формы, которые тесно связаны с моделями Django. Например, у вас может быть модель BlogComment, и вы хотите создать форму, которая позволяет людям отправлять комментарии. В этом случае было бы излишним определять типы полей в вашей форме,…