Запрос на доступ к методу пользовательской модели - Django ORM

У меня есть 2 модели, которые имеют отношение к этому вопросу:

class ParkingOrder(models.Model): # main order that could pay for multiple parkers
    id = models.UUIDField(default=uuid.uuid4, unique=True, editable=False, primary_key=True)
    timestamp = models.DateTimeField(null=True, blank=True)
    status = models.CharField(max_length=15)
    stripe_charge_id = models.CharField(max_length=150)
    wallet = models.CharField(max_length=100, null=True, blank=True) # if mobile wallet was used for order (Apple Pay, Google Pay, etc.)

    def __str__(self):
        return str(self.id)

    def walletdisplay(self):
        return self.wallet.replace('_', ' ').title()

class ParkingSession(models.Model): # attributes of a single parker
    parking_duration = models.ForeignKey(ParkingOption, on_delete=models.PROTECT)
    parking_order = models.ForeignKey(ParkingOrder, on_delete=models.PROTECT) #refernce which order it belongs to
    price = models.IntegerField(null=False, blank=False) # store price in pennies
    license_num = models.CharField(max_length=20, blank=False, null=False)

    def __str__(self):
        return str(self.parking_duration) + " - " + str(self.parking_order) + " - " + str(self.license_num)

Я пытаюсь запросить словарь всех типов кошельков.

ParkingSession.objects.filter(parking_order__status='Paid').exclude(parking_order__wallet='No wallet').values('parking_order__wallet').order_by('-parking_order__wallet').annotate(count=Count('parking_order__wallet'))

Приведенный выше запрос работает отлично, но мне нужен метод walletdisplay вместо атрибута wallet. Это происходит потому, что Stripe возвращает 'apple_pay', 'google_pay' вместо 'Apple Pay', 'Google Pay'.

Я пробовал это, но он выдает ошибку, говоря, что 'walletdisplay' не является опцией:

ParkingSession.objects.filter(parking_order__status='Paid').exclude(parking_order__wallet='No wallet').values('parking_order__walletdisplay').order_by('-parking_order__walletdisplay').annotate(count=Count('parking_order__walletdisplay'))

Как получить доступ к пользовательскому методу внешнего ключа в запросе?

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