2011-03-02 74 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 

回答