添加请求到django模型方法?

时间:2009-04-17 10:11:04

标签: python django django-models

我正在跟踪模型上的用户状态。对于模型“课程”,我的状态为“完成”,“学习”,“已查看”。在模型列表的视图中,我想添加用户状态。这样做的最佳方式是什么?

一个想法:将请求添加到模型方法就可以了。这可能吗?

编辑:我的意思是模板代码:{{lesson.get_status}},带有get_status(self,request)。可能吗?它还不起作用。

2 个答案:

答案 0 :(得分:2)

如果您的状态是更改的值,则必须将其分为两个单独的部分。

  1. 更新状态。必须在视图函数中调用它。然而,真正的工作属于模型。视图函数调用模型方法并执行保存。

  2. 显示状态。这只是状态的一些字符串表示。

  3. 模型

    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>
    

答案 1 :(得分:1)

是的,您可以使用请求参数向模型添加方法:

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

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