2016-12-07 10 views
0

장고를 배우고 있고 다른 클래스를 연결했습니다. Archipel -> Island -> 커뮤니티를 사용하여 웹 사이트에 게시 할 항목을 현지화했습니다 (커뮤니티는 톤이 속한 하나의 섬에만 속함). 오직 한 군주 만). 어쩌면 내가 잘못했지만 여기에 내가 코딩하는 방법이다 : 나는를 retreive 어떻게여러 외래 키를 통해 객체의 속성 검색

class Product(models.Model): 
    community = models.ForeignKey(Community, on_delete=models.CASCADE) 
    island = # community->island 
    archipelago = # community->island->archipelago 
    Product_title = models.CharField(max_length=200) 
    Product_text = models.TextField() 
    Product_price = models.IntegerField(default=0) 
    Product_visible = models.BooleanField(default=False) 
    pub_date = models.DateTimeField('date published') 

:

다음 클래스에서
#models.py 
class Archipel(models.Model): 
    """docstring for Archipel.""" 
    archipel_name = models.CharField(max_length=200) 

    def __str__(self): 
     return self.archipel_name 

class Island(models.Model): 
    """docstring for Archipel.""" 
    archipel = models.ForeignKey(Archipel, on_delete=models.CASCADE) 
    island_name = models.CharField(max_length=200) 

    def __str__(self): 
     return self.island_name 


class Community(models.Model): 
    """docstring for Archipel.""" 
    island = models.ForeignKey(Island, on_delete=models.CASCADE) 
    community_name = models.CharField(max_length=200) 
    community_zipcode = models.IntegerField(default=98700) 

    def __str__(self): 
     return self.community_name 

, 내가 쉽게 외래 키에 제품 감사의 커뮤니티 이름을 얻을 수 있습니다 island_name 및 군도 속성 내 제품? 나는

island = Community.select_related('island').get() 

을 시도했지만 모두 섬으로 나에게 검색어 세트를 돌려줍니다. 그래서 "community"를 시도했지만 Django는 ForeignKey 객체에 slelect_related 객체가 없다고 대답합니다.

답변

0

당신은 dotnotation을 사용하여이를 수행 할 수 있습니다. 당신이 product 객체가 있다고 가정하자, 당신이

island_name = product.commuinty.island.island_name 
archipel_name = product.commuinty.island.archipel.archipel_name 
+0

많은 감사를 할 수있다, 나는 해결책 돌아 서서 지금 당신은 정말 선택을 보인다 썼다. 내가 찾지 못한 이유는 제품 오브젝트 자체가 아니라 커뮤니티에서 데이터를 추출하려고 시도했기 때문입니다. 현재 제품이 수업에서 정의되지 않았기 때문에 도움을받을 수있는 사람은 누구나 내 템플릿에서 직접 대답을 사용했습니다.'{{product.commis.island.island_name}} 감사합니다. –

+0

알다시피, 내가 community_name을 얻는 유일한 이유는 Community 클래스에서 내 __str__ 함수 때문이었습니다. 올바른 방법 인 점 표기법으로 추출한 방법을 수정합니다! –