Сортировка объектов в админпанели django на основе поля charfield, которое также содержит определенные символы, такие как $, евросимвол, запятая и т.д.,

В панели администратора Django мне нужна функциональность для администратора, которая позволяет ему сортировать автомобили по цене. Здесь цена является CharField и содержит различные символы, кроме цифр в строковом формате. что затрудняет сортировку.

Я хочу отфильтровать автомобили по цене, но цена является строкой и содержит такие символы, как $, запятая и символы евро. Я не понимаю, как это отфильтровать.

class MostExpensiveCars(admin.SimpleListFilter):
    title = _("Most Expensive Cars")
    parameter_name = "most_expensive_cars"

    def lookups(self, request, model_admin):
        return (
            ("today", _("Today")),
            ("yesterday", _("Yesterday")),
            ("this_week", _("This Week")),
        )

    def queryset(self, request, queryset):
        if self.value() == "today":
            # get today's date
            today = datetime.today().date()
            # get the most expensive cars sold today
            queryset =  queryset.filter(sold_on=today)
        if self.value() == "yesterday":
            # get yesterday's date
            yesterday = datetime.today().date() - timedelta(days=1)
            queryset = queryset.filter(sold_on=yesterday)
            # get the most expensive cars sold yesterday
            # return queryset
        if self.value() == "this_week":
            # get the most expensive cars sold this week
            seven_days_ago = datetime.today().date() - timedelta(days=7)
            queryset = queryset.filter(sold_on__gte=seven_days_ago)
        
        # TODO: code to filter queryset by price since the price is a string
        # and contains many characters like $, commas, etc.
        ...........


@admin.register(Car)
class CarAdmin(admin.ModelAdmin):

    list_display = [
        "id",
        "title",
        "photo",
        "price",
        .......
    ]
    list_filter = [
        MostExpensiveCars,
        "status",
        "make",
        "interior_color",
        "exterior_color",
        "transmission",
        .........
    ]

До сих пор я пробовал решение с помощью Chat GPT, которое дает синтаксическую ошибку -

from django.db.models import F
from django.db.models.functions import Cast
from django.db.models import IntegerField

queryset = queryset.annotate(price_int=Cast(F('price').replace(',',''), output_field=IntegerField()))
return queryset 
Вернуться на верх