2017-08-16 51 views
0

我有一点复杂的数据库模型结构,见下面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'), 
) 

现在我想取(仅结构),一个Servicepayment modecompany的所有ServiceBillPost

我有service_id,说1,

那么我拿到的服务,

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

然后让所有业务单据后,

service_bill_post = service.service_bill_post.all() 

,但在这里,我怎么能过滤通过payment modemode字段Payment模型根据上面给出的关系使用django ORM?

+0

如何'Service'和'Payment'连接? “服务”中是否有指向“付款”的内容或仅向后? – bluesummers

回答

1

你尝试?:

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

*假设:

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

0

您可以使用filter()

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