외래 키와 함께 Django 1.4.13을 사용하고 있습니다. 우리는 ContentUser 클래스에 외래 키가있는 클래스로부터 상속받은 클래스 인 BusinessUnit을 가지고 있습니다. 우리는 클래스 ContentSet에서 다음과 같은 기능을 가지고 :외부 키 역방향 - Django의 버그?
def business_units_default_content_set_count(self):
"""
Returns the number of business units linked to this content set as default.
"""
return len(set([bu.pk for bu in list(self.businessunit_set.all())]))
문제는 우리가 기본 키가없는 ContentSet를 작성하는 경우 (이 함수는 0이 아닌 정수를 반환 (우리가 디스크에 저장하지 않음)이다 예를 들어 30). 내가 할 수있는 기능을 변경하여이 문제 해결 :
def business_units_default_content_set_count(self):
"""
Returns the number of business units linked to this content set as default.
"""
if (self.pk):
return len(set([bu.pk for bu in list(self.businessunit_set.all())]))
else:
return 0
을 왜 우리는 전혀 self.pk
을 확인해야합니까? Django 1.4.13의 버그입니까? 그리고 만약 그렇다면 장고의 다른 버전에서 수정 되었습니까?
에 연결되지 않은 일부 BusinessUnits을 가지고 있기 때문에
은 아마 문제입니다. 그것이 불가능하기 때문에 (') (계산 queryset에 중복 항목이 있음). –@DanielRoseman 예, 동의합니다. 우리는'len (list (self.business_units.all()) + list (self.businessunit_set.all())))))')'에서 bu에 대한 bu.pk를 반환하는 또 다른 함수를 가지고 있습니다.이 함수는 'list (self.business_units.all()) '가없는 다른 함수. – Uri