我在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:出现此错误(函数不存在):
使用此查询:
paymentsss = Transaction.objects.all().select_related('currency'
'payment_source__payment_type',
'deal__service__contractor',
).annotate(result=Func(function='select_cards', output_field=models.BigIntegerField()))
目前没有回答
相关问题 更多 >
编程相关推荐