2014-07-06 3 views
0

는 난 그냥 예를 들어이 사용하고 있기 때문에 실제로 여기에 방법 getJustDomainName 이름을 구현하지 않았다장고 쉘 (Django Shell)에서 모델로부터 메소드를 어떻게 호출합니까?

from django.db import models 

class Publisher(models.Model): 
    name = models.CharField(max_length=30) 
    address = models.CharField(max_length=50) 
    city = models.CharField(max_length=60) 
    state_province = models.CharField(max_length=30) 
    country = models.CharField(max_length=50) 
    website = models.URLField() 

    def getJustDomainName(self): 
     """ for example, if website is http://www.someweb.com/index.html, return someweb.com """ 
     return '0'; #TODO 

같은 간단한 모델을 가지고있다.

이 메서드는 장고 셸에서 테스트하고 싶습니다. 그래서 나는 다음과 같은 일을 시도했다.

Publisher.objects.all()[0].getJustDomainName 

하지만 대가로 나는 내가 기대하고있는 무슨 아니다

<bound method Publisher.getJustWebsiteName of <Publisher: Publisher(#1): RandomHouse>> 

를 얻을. 나는 함수가 반환하는 것을 반환하는 결과를 기대하고있다.

이 모델 메서드를 셸에서 제대로 호출하려면 어떻게해야합니까?

답변

7

메소드를 호출하지 않습니다.

Publisher.objects.all()[0].getJustDomainName() 

통지가 마지막에 괄호 ()을 : 당신은 할 필요가있다. 당신이 지금하고있는 방식은 메소드 자체를 인쇄하는 것뿐입니다 (<bound method... 등은 오류가 아닙니다. 단순히 함수에 대해 수행하는 것처럼 ()을 사용하여 실행하는 대신 메소드에 대해 간단하게 알려줍니다).

p.s.

저는 Python을 처음 접하는 개발자 (또는 개발자)라고 생각합니다. 여러분은 매우 기본적인 Python을 사용하고 있습니다. 여러분은 낙타 케이싱을 사용하고 있고, 라인의 끝에 불필요한 ;을 사용하고 있습니다.). ;은 일반적으로 괜찮습니다. 그러나 파이썬의 규칙은 함수 및 메소드에 , 즉 getJustDomainName 대신 get_just_domain_name을 사용한다는 것을 알고 있습니다. (나는 just을 완전히 제거 했으므로 중복 됨). 두 언어 모두 유효합니다. 언어의 일반적인 규칙 일뿐입니다.

+0

보너스 팁 주셔서 감사합니다 :) – CodyBugstein