2017-02-17 55 views
0

我要貸款的,其狀態的詳細信息,distrtict,宗教,職業等於借款人的詳細信息,即,(狀態,distrtict,宗教,職業)如何編寫基於多個表的查詢?

這是借款人的models.py

class Borrower(models.Model): 
    district = models.TextField(blank=True) 
    state = models.TextField(blank=True) 
    profession = models.TextField(blank=True) 
    religion = models.TextField(blank=True) 

這是貸款人的models.py

class LenderStateDistrict(models.Model): 
    lenderId = models.CharField(max_length=5) 
    state = models.CharField(max_length=50,**optional) 
    district = models.CharField(max_length=50,**optional) 

class LenderReligion(models.Model): 
    lenderId = models.CharField(max_length=5) 
    religion = models.CharField(max_length=50, **optional) 

class LenderMultipleProfessions(models.Model): 
    lenderId = models.CharField(max_length=5) 
    profession = models.CharField(max_length=50,**optional) 

views.py

@api_view(['GET']) 
def xyz(request): 
    borrower1= Borrower.objects.get(id =1) 
    city = borrower1.district 
    state = borrower1.state 
    profession = borrower1.profession 
    religion = borrower1.religion 

我得到了借款人的所有要求,然後如何根據三個表格進行查詢, LenderStateDistrict,LenderReligion,LenderMultipleProfessions,如果借款人的地區,州,宗教,職業等於貸款人那麼它應該給出詳細信息如何查詢它?

+0

你想要什麼retieve? – e4c5

+0

我想檢討lenderid – praveenjp

+0

這些都是你的相關模型嗎? – e4c5

回答

0

您的模型存在一個基本問題。他們不相互關聯。關係數據庫管理系統的力量在於建立關係!

Django提供了定義三種最常見類型的數據庫關係的方法:多對一,多對多和一對一。

https://docs.djangoproject.com/en/1.10/topics/db/models/#relationships

至少,你需要創建您的借與貸款人之間的外鍵。但是,如果用戶可以從多個貸方借款,那麼它可能需要成爲ManyToMany關係

0

由於@ e4c5提到您的模型存在問題,請嘗試將模型與其他模型相關聯,以便寫入查詢變得更加容易。

試圖實現這種方式:

class District(models.Model): 
    field1 = models.CharField(max_length=255) 
    field2 = models.CharField(max_length=255) 

class Religion(models.Model): 
     field1 = models.CharField(max_length=255) 
     field2 = models.CharField(max_length=255) 

class Profession(models.Model): 
     field1 = models.CharField(max_length=255) 
     field2 = models.CharField(max_length=255) 

這要根據你的問題是你的基本款,然後您可以在貸款人和借款人表參考這些模式,這種方式:

class Lender(models.Model): 
     district = models.ForeignKey(District, related_name="lender_district") 
     profession = models.ForeignKey(Profession, related_name="lender_profession") 
     religion = models.ForeignKey(Religion, related_name="lender_region") 

class Borrower(models.Model): 
     district = models.ForeignKey(District, related_name="borrower_district") 
     profession = models.ForeignKey(Profession, related_name="borrower_profession") 
     religion = models.ForeignKey(Religion, related_name="borrower_region") 

這樣你就可以實現你想要的查詢。假設你要訪問誰屬於小區裏字段1 =「XYZ」借款人的細節和貸款人,對於你要簡單地寫:

lenders = Lender.objects.filter(district__field1="xyz") 
borrowers = Borrower.objects.filter(district__field1="xyz") 

而且更簡單的方法是:

district = District.objects.get(field1="xyz") # get district 
lenders = Lender.objects.filter(district=district) # Get Lenders 
borrowers = Borrower.objects.filter(district=district) # Get Borrowers 

如果貸方和借款人擁有多個地區,宗教或職業,您也可以實施ManyToMany關係。