2009-04-17 5 views
6

모델의 사용자 상태를 추적하고 있습니다. 'Lesson'모델의 경우 'Finished', 'Learning', 'Viewed'상태가 있습니다. 모델 목록에 대한보기에서 사용자 상태를 추가하려고합니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?Django 모델 메소드에 요청을 추가 하시겠습니까?

하나의 아이디어 : 요청을 모델 메소드에 추가하는 것이 트릭입니다. 그게 가능하니?

편집 : template_code : {{lesson.get_status}}에서 get_status (self, request)를 사용했습니다. 가능한가? 그것은 (아직) 작동하지 않습니다.

답변

1

예, 당신은 요청 paramater와 모델에 메소드를 추가 할 수 있습니다 : 당신의 상태는 두 개의 분리 된 부분으로이 휴식 할 수 있고, 변화하는 값이다

class MyModel(models.Model): 
    fields.... 

    def update_status(self, request): 
     make something with the request... 
+0

IT는보기에서이 메소드를 호출 할 수 있습니다? 그게 목표이고 아직 작동하지 않습니다! –

+0

{{lesson.update_status}}와 같은 템플릿 코드를 사용했습니다. –

+0

템플릿에서 메소드에 인수를 전달할 수 없습니다. –

2

합니다.

  1. 상태를 업데이트하는 중입니다. 이 함수는 뷰 함수에서 호출해야합니다. 그러나 실제 작업은 모델에 속합니다. 뷰 함수는 모델 메서드를 호출하고 저장합니다.

  2. 상태를 표시합니다. 이것은 상태의 일부 문자열 표현입니다.

모델

class MyStatefulModel(models.Model): 
    theState = models.CharField(max_length=64) 
    def changeState(self): 
     if theState is None: 
      theState= "viewed" 
     elif theState is "viewed": 
      theState= "learning" 
     etc. 

보기 기능

def show(request, object_id): 
    object= MyStatefulModel.objects.get(id=object_id) 
    object.changeState() 
    object.save() 
    render_to_response(...) 

템플릿

<p>Your status is {{object.theState}}.</p> 
관련 문제