приложение должно быть полезным и выполнять нужную работу, но во всех организациях уже есть свои системы которое это все выполняет
from PIL import Image
def save(self, *args, **kwargs):
super(Posts, self).save(*args, **kwargs) # Posts - модель
imag = Image.open(self.image.path) #image - поле в модели.
if imag.width > 400 or imag.height> 300: # изменение размера для примера
output_size = (400, 300)
imag.thumbnail(output_size)
imag.save(self.post_image.path)
client = form.save()
request.session['client_id'] = client.id
request.session.modified = True
redirect(reverse('app:view', kwargs={ 'bar': FooBar })) # Id записывать в kwargs
def get_us_avatar(self, obj):
print(repr(obj.avatar))
if obj.avatar:
return mark_safe(f'<img src="{obj.avatar.url}" alt="" height="100px">')
else:
return mark_safe(f'<img src="" alt="">')
import time
from os import path
import sqlite3 # Библиотека для работы с sqlite, не нужна
import openpyxl
# import pyodbc Установить библеотеку и раскоментить
def fetch_all_rows():
"""
Функция, выбирающая данные из БД
"""
con = sqlite3.connect('db.sqlite3') # Подключение к базе данных, заменить на
# conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Users\Ron\Desktop\Test\test_database.accdb;')
# где C:\Users\Ron\Desktop\Test\test_database.accdb - путь до базы
cur = con.cursor()
cur.execute('select * from accounts_useraccount') # sql-запрос для выборки. Подставить свой для правильной выборки
users = cur.fetchall() # Запись полученных данных в переменную
cur.close() # Закрытие соединения
return users
def generare_xcls_files(users):
user_set = users # получение юзеров
excel_file = openpyxl.load_workbook('template.xlsx') # Открытие шаблона, подставить свое имя
employees_sheet = excel_file['Карточка'] # Выбор активной таблицы, подставить свое имя
i = 1 # Переменная, в которую будет записываться номер цикла, нужно чисто для красивого имених xlsx файла
for user in users: # Цикл по всем данным
username = user[4] # Получение значение конкретного столбца таблицы. ВАЖНО - НУМИРАЦИЯ НАЧИНАЕТСЯ С 0
email = user[7] # Т.Е. ЧТОБЫ ВЫБРАТЬ ЗНАЧЕНИЕ ИЗ СТОЛБЦА EMAIL, КОТОРЫЙ ЯВЛЯЕТСЯ 8 ПО СЧЕТУ В ТАБЛИЦЕ, НУЖНО УКАЗАТЬ 7
employees_sheet['B1'] = username #Запись полученного значения в конкретную ячейку
employees_sheet['B2'] = email
filename = f'{i}_{username}_{email}.xlsx' # Генерация имени файла, состоящего из нескольких значений (номер цикла и т.д.).
filename = path.join('files', filename) # Добавление к имени файла пути до папки files, в одном со скриптом каталоге. ВАЖНО - папку нужно создать вручную.
i+=1 # увеличение переменной на 1
excel_file.save(filename=filename) # cохранение нового файла
if __name__ == '__main__':
users = fetch_all_rows() # Запуск функций
generare_xcls_files(users)
from django.db.models.signals import post_save
from django.dispatch import receiver
# method for updating
@receiver(post_save, sender=Zakaz)
def update_stock(sender, instance, **kwargs):
# instance - созданный объект, к которому можно обратится
# Здесь создавать объект