Django 多级多对一查询数据检索



我有一点复杂的数据库模型结构,见下文(仅结构(

class Service(models.Model)
fields .....
class ServiceBillPost(models.Model):
service = models.ForeignKey(Service, related_name='service_bill_posts')
class Payment(models.Model):
bill_post = models.OneToOneField(ServiceBillPost)
mode = models.PositiveSmallIntegerField(choices=PAYMENT_MODE, default=0)
PAYMENT_MODE = (
(0, 'Cash'),
(1, 'bKash'),
(2, 'CreditCard'),
(3, 'Cheque'),
(4, 'Company'),
)

现在我想获取,payment modecompanyService的所有ServiceBillPost

我有service_id,比如说1,

然后我得到了那个服务,

service = Service.objects.get(pk=service_id)

然后获取所有服务账单,

service_bill_post = service.service_bill_post.all()

但是在这里,我如何使用 django ORM 根据上述给定的关系按Payment模型mode字段的payment mode进行过滤?

你试过吗?

service_bill_post = service.service_bill_post.filter(payment__mode='Cash')

*若:

bill_post = models.OneToOneField(ServiceBillPost, related_name='payment')

您可以使用filter()

service = Service.objects.get(pk=service_id)
service_bill_posts = service.service_bill_posts.filter(payment__mode='Company')

最新更新