2017-07-29 52 views
0

尝试获取所有贷款清单以及与该特定贷款相关的相关地址。基于模型过滤器查询获取所有相关对象

型号:

class LoanDetail(models.Model): 
    job_no = models.AutoField('Job No', primary_key=True) 
    loan_account_no = models.CharField('Loan account No', blank=True, max_length=128) 
    job_status = models.IntegerField('Job Status', choices=JOB_STATUS, default=1, db_index=True) 
    applicant_type = models.IntegerField('Applicant type', choices=APPLICANT_TYPE, default=1, db_index=True) 
    customer_name = models.CharField('Customer Name', max_length=128) 

class LoanUserAddress(models.Model): 
    loan = models.ForeignKey(LoanDetail, on_delete=models.CASCADE, related_name="loanuser") 
    address_type = models.ForeignKey(AddressType) 
    house_name = models.CharField('House/Flat/Name', max_length=128) 
    street = models.CharField('Street', max_length=128) 
    area = models.CharField('Area/Location', max_length=128) 

观点:

class SearchLoan(APIView, ResponseViewMixin): 

    def get(self, request, *args, **kwargs): 
     loan = kwargs['loan']; 
     address = LoanDetail.objects.filter(loan_account_no__in=[loan]) 

这是只返回贷款细节我怎么可以得到所有的地址与loandetails一起。

我想应对像 {'loan_account_no': '12412412421', 'customer_name': 'Ravi' , address: [ {'id': 1, 'house_name': 'Some aadress'}, {'id': 2, 'house_name': 'Some aadress 2'}, {'id': 3, 'house_name': 'Some aadress 3'}] }

回答

0

如果你只是想在地址一组负载

addresses = LoanUserAddress.objects.filter(loan__loan_account_no__in=[loan]) 

的。如果你想用不会忽略贷款的列表,获取列表贷款像你这样

loans = LoanDetail.objects.filter(loan_account_no__in=[loan]) 

,并在查询集的每个项目,你可以访问属性loanuser,这将是这笔贷款的地址列表。其中loanuser是ForeignKey字段的related_name

for loan_item in loans.all(): 
    print(loan_item.loanuser) 
+0

使用带有一个项目列表的“in”查询没有意义。 –