#django #image #docker #celery
Вопрос:
Я прочитал слишком много статей без статей, но я все еще не нашел решения своей проблемы.
У меня есть модель Django с полем изображения на ней
изображение = модели.Поле изображения(upload_to=’продукты/%Г/%м/%д’)
Все, что мне нужно сделать, это сохранить изображение со своего склада по уже существующему пути к файлу изображения с помощью поля Изображение
У меня есть код ниже, этот скрипт синхронизируется со складом, и мне нужно загрузить изображение и сохранить его в моем модельном магазине/книге
from celery import shared_task from django.core.mail import send_mail import requests from .models import Author, Book, Genre @shared_task def send_mail_task(subject, message, email): send_mail(subject, message, email, ['admin@example.com']) @shared_task def shop_sync(): print('Starting update from warehouse api for database') print('Getting data from api...') url = 'http://warehouse:8001/authors/' print('Clearing data...') response_author = requests.get(url) if response_author.status_code != 200: return response_data_author = response_author.json() while 1: for counter, data in enumerate(response_data_author['results']): Author.objects.get_or_create( id=data['id'], defaults={ 'id': data['id'], 'first_name': data['first_name'], 'last_name': data['last_name'] } ) if response_data_author['next']: response_data_author = requests.get(response_data_author['next']).json() else: break url = 'http://warehouse:8001/genres/' print('Clearing data...') response_genre = requests.get(url) if response_genre.status_code != 200: return response_data_genre = response_genre.json() while 1: for counter, data in enumerate(response_data_genre['results']): Genre.objects.get_or_create( id=data['id'], defaults={ 'slug': data['slug'], 'name': data['name'], } ) if response_data_genre['next']: response_data_genre = requests.get( response_data_genre['next'] ).json() else: break url = 'http://warehouse:8001/books/' print('Clearing data...') response_book = requests.get(url) if response_book.status_code != 200: return response_data_book = response_book.json() while 1: for counter, data in enumerate(response_data_book['results']): book, created = Book.objects.get_or_create( id=data['id'], defaults={ 'id': data['id'], "genre": Genre.objects.get(id=data['genre']), "author": Author.objects.get(id=data['author']), "title": data['title'], "description": data['description'], "language": data['language'], "pages": data['pages'], "image": data['image'], 'slug': data['slug'], "price": data['price'], "isbn": data['isbn'], "created": data['created'], "available": data['available'], "quantity": data['quantity'], } ) if not created: book.genre = Genre.objects.get(id=data['genre']) book.title = data['title'] book.description = data['description'] book.language = data['language'] book.pages = data['pages'] book.image = data['image'] book.slug = data['slug'] book.price = data['price'] book.isbn = data['isbn'] book.created = data['created'] book.available = data['available'] book.quantity = data['quantity'] book.author = Author.objects.get(id=data['author']) book.save() if response_data_book['next']: response_data_book = requests.get(response_data_book['next']).json() else: break print('Database was updated from warehouse api')