Django条件为“ and”的联接表

我在payment_source中有一个SELF JOINed表views.py的查询

 paymentsss = Transaction.objects.all().select_related('currency','payment_source__payer','deal__service__contractor',).filter(
  payment_date__range=[date1,date2],).order_by('-id')

哪个会变成:

    SELECT "processing"."transaction"."id","processing"."transaction"."currency_id","processing"."transaction"."deal_id","processing"."transaction"."payment_source_id","processing"."transaction"."payment_date","processing"."transaction"."amount","processing"."transaction"."status","processing"."transaction"."context","processing"."currency"."id","processing"."currency"."iso_name","processing"."currency"."minor_unit","processing"."deal"."id","processing"."deal"."service_id","processing"."service"."id","processing"."service"."contractor_id","processing"."service"."name","processing"."service"."description","processing"."contractor"."id","processing"."contractor"."name","processing"."payer_payment_source"."id","processing"."payer_payment_source"."payer_id","processing"."payer_payment_source"."payment_type_id","processing"."payer_payment_source"."source_details",T7."id",T7."payer_id",T7."payment_type_id",T7."source_details"
  FROM "processing"."transaction"
  LEFT OUTER JOIN "processing"."currency"
    ON ("processing"."transaction"."currency_id" = "processing"."currency"."id")
  LEFT OUTER JOIN "processing"."deal"
    ON ("processing"."transaction"."deal_id" = "processing"."deal"."id")
  LEFT OUTER JOIN "processing"."service"
    ON ("processing"."deal"."service_id" = "processing"."service"."id")
  LEFT OUTER JOIN "processing"."contractor"
    ON ("processing"."service"."contractor_id" = "processing"."contractor"."id")
  LEFT OUTER JOIN "processing"."payer_payment_source"
    ON ("processing"."transaction"."payment_source_id" = "processing"."payer_payment_source"."id")
  LEFT OUTER JOIN "processing"."payer_payment_source" T7
    ON ("processing"."payer_payment_source"."payer_id" = T7."id")

我想添加条件and,以获取它:

    LEFT OUTER JOIN "processing"."payer_payment_source" T7
        ON ("processing"."payer_payment_source"."payer_id" = T7."id" 
and T7."payment_type_id" = 'bank_card_details')

models.py

class PayerPaymentsource(models.Model):
    id = models.BigIntegerField(blank=True,null=False,primary_key=True)
    payer = models.ForeignKey("self",null=True,on_delete=models.CASCADE,)
    payment_type = models.ForeignKey(PaymentType,max_length=64,blank=True,on_delete=models.CASCADE)
    source_details = models.TextField(blank=True,null=True) 

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


class Transaction(models.Model):
    id = models.BigIntegerField(blank=True,primary_key=True)
    currency = models.ForeignKey(Currency,on_delete=models.CASCADE)
    deal = models.ForeignKey(Deal,on_delete=models.CASCADE)
    # service_instance = models.ForeignKey(ServiceInstance,on_delete=models.CASCADE)
    payment_source = models.ForeignKey(PayerPaymentsource,on_delete=models.CASCADE)
    payment_date = models.DateTimeField(blank=True,null=True)
    amount = models.IntegerField(blank=True,null=True)

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


class PaymentType(models.Model):
    id = models.CharField(max_length=75,primary_key=True)
    name = models.CharField(max_length=128,null=True)

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

我该怎么做?

此外,我很高兴收到有关如何通过选择processing.payer_payment_sourceT7中的字段来删除重复项的建议。

cjxk01 回答:Django条件为“ and”的联接表

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3160513.html

大家都在问