2013-05-10 1 views
4

가 나는 모델 관리자를 사용하여 간단한 모델이 없다 반환 : 지금 장고 쉘에서 객체를 저장하려고하면장고 모델은 저장되지,하지만 없음

class CompanyReviewManager(models.Manager): 
    def get_votes_for_company(self, company): 
     try: 
      return CompanyReview.objects.filter(user = user).count() 
     except ObjectDoesNotExist: 
      return None 

    def get_rating_for_field(self, installer, field): 
     try: 
      return CompanyReview.objects.filter(user = user).aggregate(Avg(field)) 
     except ObjectDoesNotExist: 
      return None 

class CompanyReview(models.Model): 
    user = models.ForeignKey(settings.AUTH_USER_MODEL) 
    satisfaction = models.PositiveSmallIntegerField(blank = True, null = True,) 
    comments = models.TextField(blank = True, null = True,) 

    objects = CompanyReviewManager() 

    def save(self, *args, **kwargs): 
     obj = super(InstallerReview, self).save(*args, **kwargs) 
     return obj 

, 객체가 저장됩니다,하지만 아무것도 반환됩니다. 왜?

In [1]: company_obj = InstallerReview() 
In [2]: company_obj.user = CompanyUser.objects.all()[2] 
In [3]: obj = company_obj.save() 
In [4]: obj 
Out[4]: 
In [5]: company_obj 
Out[5]: <CompanyReview: AdminCompany> 

왜 3 단계는 오류없이 실패?

+0

@Urda 여기에 뭔가 빠져있을 수도 있지만 특히 1.5와 어떻게 관련이 있는지 알 수 없습니다. 그리고 왜 "Django"를 제목에 추가해야합니까? 그것은 장고 질문으로 이미 태그가 붙어 있습니다. – Anto

답변

19

수퍼 클래스 save 메서드가 아무 것도 반환하지 않기 때문에. self을 저장할 필요가 없습니다. 다른 것을 반환하고 obj으로 전화 할 필요가 없습니다.

서브 클래스 save에서 self을 반환 할 수는 있지만 그다지 중요하지 않습니다. 일반적으로 파이썬에서 함수가 내부적으로 오브젝트를 변경하면 변경된 오브젝트를 리턴하지 않습니다. 목록 sort() 메소드와 비교하십시오.

+5

@danielroseman : 너 혹시자는 사람있어? 당신이 이미 완벽한 답을 얻었음을 알기 위해 질문을 읽는 것은 지루해지고 있습니다.) –