OperationalError at /admin/idm/profile/
(1267, "Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'like'")
Vi kan evt. lave en workaround ved at udvide alle vores ModelAdmin med en søge-metode der returnerer qs.empty() hvis søgestrengen indeholder ikke-Latin1 tegn. Her er en skitse:
class Latin1Search(admin.ModelAdmin):
def get_search_results(self, request, queryset, search_term):
try:
search_term.encode('latin1')
except UnicodeEncodeError:
return queryset.empty()
return super().get_search_results(request, queryset, search_term)
# Eksisterende ModelAdmin subclasses skal bruge Latin1Search som mixin.
# Dvs. i idm/admin.py:
class ProfileAdmin(admin.ModelAdmin, Latin1Search):
# ... samme implementation som før
admin.site.register(Profile, ProfileAdmin)
# Hvor vi før brugte vanilla ModelAdmin skal vi bruge Latin1Search.
# Dvs. i uniprint/admin.py:
admin.site.register(Document, Latin1Search)
Når man besøger eks. https://taagekammeret.dk/admin/idm/profile/?q=%E2%81%B8
Vi kan evt. lave en workaround ved at udvide alle vores ModelAdmin med en søge-metode der returnerer qs.empty() hvis søgestrengen indeholder ikke-Latin1 tegn. Her er en skitse: