2011-03-02 72 views
0

我希望我的应用的每个模型都能存储创建其条目的用户。我所做的:模型上的Django用户字段

class SomeModel(models.Model): 
    # ... 
    user = models.ForeignKey(User, editable = False) 

class SomeModelAdmin(admin.ModelAdmin): 
    # ... 
    def save_model(self, request, obj, form, change): 
     # Get user from request.user and fill the field if entry not existing 

我的问题:由于有用户认证和历史一个完整的应用程序,有没有使用这个应用程序的任何功能,而不是做上述的简单方法(或许,更加注重或标准化)程序到每个模型?

更新:

这就是我所做的。它看起来真的很丑。请让我知道是否有一个聪明的方法来做到这一点。

我伸出我想对这些models.py的fieds所有型号:

class ManagerLog(models.Model): 
    user = models.ForeignKey(User, editable = False) 
    mod_date = models.DateTimeField(auto_now = True, editable = False, verbose_name = 'última modificação') 
    class Meta: 
     abstract = True 

在admin.py,我做了下面的类一样:

def manager_log_save_model(self, request, obj, form, change): 
    obj.user = request.user 
    return obj 

然后,我还需要重写每个扩展模型save_model:

class ExtendedThing(ManagerLogAdmin): 
    # ... 
    def save_model(self, request, obj, form, change): 
     obj = manager_log_save_model(self, request, obj, form, change) 
     # ... other stuff I need to do here 

回答