장고형식 오류 :
을 반복 가능한하지 않는 'RelatedManager'개체 난 다음 모델을 가지고 :
class Group(models.Model):
name = models.CharField(max_length=100)
parent_group = models.ManyToManyField("self", blank=True)
def __unicode__(self):
return self.name
class Block(models.Model):
name = models.CharField(max_length=100)
app = models.CharField(max_length=100)
group = models.ForeignKey(Group)
def __unicode__(self):
return self.name
말은, B1이 G1 그룹이 차단합니다. 그것의 이름으로 나는 모든 블록을 그룹 g1에서 얻고 싶습니다. 나에게 반복 가능한 아니다 RelatedManager 객체를 반환
def get_blocks(group):
def get_needed_blocks(group):
for block in group.block_set:
blocks.append(block)
if group.parent_group is not None:
get_needed_blocks(group.parent_group)
blocks = []
get_needed_blocks(group)
return blocks
하지만 b1.group.block_set : 나는 다음 재귀 함수를 썼다.
어떻게해야합니까? 뭐가 문제 야?
어쨌든 RelatedManager가 반복 가능하도록 만들어지지 않은 이유를 알고 있습니까? 나는 그것이 그 방법이 될 것으로 기대했을 것입니다 ... – stalepretzel
이 코멘트는 조금 늦었습니다.하지만 추론은 DB에 가져 오기를 수행하기 전에 쿼리를 제한하기 위해 관리자의 필터링 방법을 사용할 수 있다는 것입니다. – ovangle
@stalepretzel. 표준 장고 관리자와 똑같이 작동하기 때문입니다. Model.object를 호출하지 않고 반복합니다. Model.objects.all()을 호출하고 반복합니다. 장고 관리자 =/장고 쿼리 집합. – Saturnix