Обновление с 4.2.6 до 5.0.6 уничтожило мои формы
Я использую ImageForm
для загрузки изображений в мою базу данных и храню их в base64 (пользовательские иконки, только некоторые пиксели). Но обновление уничтожило эту функциональность:
class CustomImageFile(AdminFileWidget):
def render(self, name, value, attrs=None, renderer=None):
output = [super().render(name, value)]
try:
output.append(self.form_instance.instance.show_picture())
except:
pass
return "".join([x for x in output])
class PersonAdminForm(forms.ModelForm):
image_file = forms.ImageField(widget=CustomImageFile, required=False, label="picture")
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields["image_file"].widget.form_instance = self
class Meta:
model = Person
fields = ["name", ..., "image_file"]
@admin.register(Person)
class PersonAdmin(admin.ModelAdmin):
list_display = ["get_name", "get_picture"]
@admin.display(description="...")
def get_picture(self, obj):
try:
return obj.show_picture
except:
return "... "
class Person(models.Model):
name = models.CharField("name", max_length=128, blank=True, null=True)
picture = models.TextField("asb64", blank=True)
def show_picture(self):
try:
return format_html(f"""<img src="{self.picture}">""")
except:
return ""
Я протестировал это с Django 4.2.6 & 4.2.13, что дало следующие результаты:
После обновления до версии 5.0.6:
Есть ли изменения в ImageField? Я пока не нашел в патчноутах ничего, что мог бы использовать, но был бы рад решению.