2009-04-17 45 views
6

Tôi đang theo dõi trạng thái người dùng trên mô hình. Đối với mô hình 'Bài học' tôi có trạng thái 'Xong', 'Học', 'Đã xem'. Trong chế độ xem danh sách các mô hình tôi muốn thêm trạng thái người dùng. Cách tốt nhất để làm việc này là gì?thêm yêu cầu vào phương thức mô hình django?

Một ý tưởng: Thêm yêu cầu vào phương thức mô hình sẽ thực hiện thủ thuật. Điều đó có thể không?

Chỉnh sửa: Tôi có nghĩa là trong templatecode: {{lesson.get_status}}, với get_status (tự, yêu cầu). Có thể không? Nó không hoạt động (chưa).

Trả lời

1

Vâng, bạn có thể thêm một phương pháp để mô hình của bạn với một paramater yêu cầu:

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

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

là nó có thể gọi phương pháp này từ một cái nhìn? đó là mục tiêu và nó không hoạt động (chưa)! –

+0

i có nghĩa là từ templatecode, như {{lesson.update_status}} –

+0

Bạn không thể chuyển đối số cho một phương thức từ một mẫu. –

2

Nếu trạng thái của bạn là một giá trị thay đổi, bạn phải phá vỡ này thành hai phần riêng biệt.

  1. Cập nhật trạng thái. Điều này phải được gọi trong một chức năng xem. Tuy nhiên, công việc thực tế lại thuộc về mô hình. Chức năng xem gọi phương thức mô hình và thực hiện lưu.

  2. Hiển thị trạng thái. Đây chỉ là một số biểu diễn chuỗi của trạng thái.

Mẫu

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. 

Xem Chức năng

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

Template

<p>Your status is {{object.theState}}.</p> 
Các vấn đề liên quan