Запрос на доступ к методу пользовательской модели - 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'))
Как получить доступ к пользовательскому методу внешнего ключа в запросе?