如何在Django中调用存储的PostgreSQL函数?

2024-10-05 12:20:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我在PostgreSQl中有一个存储函数。我想通过django调用这个函数,并使用常规查询(根据表PayrPaymentSource)进行连接。怎么做?你知道吗

功能:

CREATE OR REPLACE FUNCTION select_cards()
RETURNS TABLE(payer_id bigint , source_details jsonb) AS $$
  SELECT payer_id as payer_id, source_details as source_details FROM "processing"."payer_payment_source" WHERE  payment_type_id = 'bank_card_details';
$$ LANGUAGE sql;

视图.py查询

paymentsss = Transaction.objects.all().select_related('currency', 
'payment_source__payment_type',
 'deal__service__contractor')

型号.py

class PayerPaymentSource(models.Model):
    id = models.BigIntegerField(blank=True, null=False, primary_key=True)
    payer_id = models.BigIntegerField(blank=True, null=True)
    payment_type = models.ForeignKey(PaymentType, max_length=64, blank=True, null=True, on_delete=models.CASCADE)
    source_details = models.TextField(blank=True, null=True)  # This field type is a guess.

    class Meta:
        managed = False
        db_table = '"processing"."payer_payment_source"'


class Transaction(models.Model):
    id = models.BigIntegerField(blank=True, null=False, primary_key=True)
    currency = models.ForeignKey(Currency, null=True, on_delete=models.CASCADE)
    deal = models.ForeignKey(Deal, null=True, on_delete=models.CASCADE)
    # service_instance = models.ForeignKey(ServiceInstance, null=True, on_delete=models.CASCADE)
    payment_source = models.ForeignKey(PayerPaymentSource, null=True, on_delete=models.CASCADE)
    payment_date = models.DateTimeField(blank=True, null=True)
    amount = models.IntegerField(blank=True, null=True)
    status = models.CharField(max_length=255, blank=True, null=True)
    context = models.TextField(blank=True, null=True)

UPD:出现此错误(函数不存在):

enter image description here

使用此查询:

paymentsss = Transaction.objects.all().select_related('currency'
'payment_source__payment_type',
'deal__service__contractor',
).annotate(result=Func(function='select_cards', output_field=models.BigIntegerField()))

Tags: idtruesourceonmodelstypedetailspayment

热门问题