Аргумент obj возвращается со значением "None" при развертывании проекта в облаке

Я разместил свой сайт на namecheap.com и когда я пытаюсь загрузить любое изображение, я встречаю эту ошибку:

UnicodeEncodeError: кодек 'ascii' не может кодировать символы в позиции 38-43: ordinal not in range(128)

У меня ушло несколько часов, пока я не нашел вопрос и проблему в этом коде:

class MultipleImageManaged(admin.ModelAdmin):
    list_display = ('id', 'images')

    def get_form(self, request, obj=None, **kwargs):
        form = super().get_form(request, obj=None, **kwargs)
        form.base_fields['images'].widget.attrs = {
            'multiple': 'multiple'
        }
        return form

    def save_model(self, request, obj, form, change):
        for data in request.FILES.getlist('images'):
            cat_name = Category.objects.get(name=obj.category)
            if obj.album:
                album_name = Album.objects.filter(category__name=cat_name).get(name=obj.album)
            else:
                album_name = None
            Gallery.objects.create(images=data, category=cat_name, album=album_name)

когда я вывел аргумент "obj" в методе get_form(), я понял, что этот аргумент возвращает значение "None", зная это, этот аргумент работает на моем localhost.

На самом деле, я не знаю, почему он так работает, но сейчас я пытаюсь придерживаться другого подхода, я не уверен, что этот подход будет работать правильно, но мне нужна помощь в этом. так что сейчас я пытаюсь использовать сигналы вместо этого, и вот мой новый подход:

from django.contrib import admin

from .models import Gallery, Album, Category

from django.db.models.signals import pre_save
from django.dispatch import receiver


class MultipleImageManaged(admin.ModelAdmin):
    list_display = ('id', 'images')

    def get_form(self, request, obj=None, **kwargs):
        form = super().get_form(request, obj=None, **kwargs)
        form.base_fields['images'].widget.attrs = {
            'multiple': 'multiple'
        }
        return form

class SaveModel(MultipleImageManaged):

    def save_model(self, request, obj, form, change):
        self.form = self.get_form(request, obj=None)
        self.request = request
        return self.create_model()
        # return super().save_model(request, obj, form, change)

    def create_model(self):
        @receiver(pre_save, sender=Gallery)
        def trigger(sender, instance, **kwargs):

            for data in self.request.FILES.getlist('images'):
                print("Image Data: ", data)
                cat_name = Category.objects.get(name=instance.category)

                if instance.album:
                    album_name = Album.objects.filter(category__name=cat_name).get(name=instance.album)
                else:
                    album_name = None
                Gallery.objects.create(images=data, category=cat_name, album=album_name)
            return trigger(sender, instance, **kwargs)

admin.site.register(Gallery, SaveModel)

может ли кто-нибудь помочь мне достичь цели моей задачи?

спасибо заранее

Вернуться на верх