2012-11-28 80 views
2

首先,我很抱歉問這個問題,我是django的新用戶。和我建立了我的項目只能由models.ModelDjango老問題:在模型中獲取當前用戶

##models.py 
    class Task(models.Model): 
     Name = models.CharField('Title', max_length=200) 
     Notes = models.TextField('Description',max_length=2000, null=True) 
     Creator = models.ForeignKey(User, related_name='TaskCreator', null=True, blank=True) 
     def __unicode__(self): 
      return self.Name 

    ##admin.py 
    class TaskAdmin(admin.ModelAdmin): 
      list_display = ['Name', 'Owner','EstEndTime','LastModifiedTime','Statu'] 

    admin.site.register(Task,TaskAdmin) 

我用的是Django默認的管理我的網站,我不使用自己的任何模板。現在,當用戶登錄並要創建任務時,我想要由當前用戶將創建者設置爲默認值。但我不知道如何獲得模型中的當前用戶。模型。 我從網絡上查找了一些信息,例如http://chewpichai.blogspot.tw/2007/09/using-user-info-outside-request-in.html,但它無法工作。那麼誰能告訴我在沒有請求的情況下在models.py文件中獲取當前用戶的方法。 它使我困惑很久,我真的希望有人能幫助我。謝謝

+0

我的答案是不正確的,我犯了一個錯誤讀你的問題。抱歉。 –

+0

如果可以,我會添加類屬性始終應該以小寫字母開頭。按照慣例,首都是類名稱。 –

回答

7

您需要覆蓋Admin類中的save_model

class TaskAdmin(admin.ModelAdmin): 
      list_display = ['Name', 'Owner','EstEndTime','LastModifiedTime','Statu'] 


      def save_model(self, request, task, form, change): 
       task.Creator = request.user 
       task.save() 

讀到這裏https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.save_model

+0

感謝您的回覆,您可以回答更多細節,因爲我是新人。 – jimwan

+0

def save_model(self,request,obj,form,change): obj.user = request.user obj.save() 在thie函數中,如何設置Task.Creator? – jimwan

+0

@ jimwan查看更新 – YardenST