2012-08-22 4 views
0

여기 내 질문입니다. Django, 모델의 각 인스턴스에 대해 작업을 실행하는 것이 가장 좋습니다.

나는이 그

class ActionQueue(models.Model): 
    action_type = models.CharField(max_length=30, choices=ACTION_QUEQUE_TYPE) 

    def execute(self): 
     if self.action_type == 'exam': 
       ... do something ... 

기능 ActionQueue의 각 인스턴스에 대해 "실행"을 실행하는 가장 좋은 방법은 무엇입니까 같은 모델?

내가 생각하는 당신에게

+0

. 나는 결과를리스트로 사용하지 않는다면 실행을위한리스트 내포를 좋아하지 않는다. –

답변

1

감사 .. 같은 결과를 달성하기 위해

for action in ActionQueue.objects.all(): 
    action.execute() 

어쩌면 더 좋은 방법은 (공연의 관점에서)이 : 현재 내가되는 for..in을 사용하고 있습니다 당신이 원하는 것은 다음

actions = ActionQueue.objects.filter(action_type='exam') 

actions.update(...) 
입니다

또는 가져만큼이나 깨끗

action_list = list(actions) 
# do something with action_list 
[do_something(action) for action in action_list] 
+0

예 .. 어쩌면 실행 작업 외부 필터링은 최고의 성능을 가져야합니다 ... 나는 몇 가지 테스트를 할 것입니다 .. :) – Michael

관련 문제