2011-04-12 116 views
18
author = models.ForeignKey(User) 

有什麼辦法可以設置這個字段的默認值來自動選擇登錄用戶嗎?我知道你可以在保存方法中做到這一點,但我的客戶已經要求它在編輯時自動默認登錄的用戶,以避免混淆。Django用戶ForeignKey的默認值

This article進入如何保存時更新它,只是沒有在編輯時。

+0

什麼是 「編輯時間」?我的意思是,文章在保存時進行編輯,不是嗎? – arie 2011-04-12 09:25:21

回答

44
class MyModelAdmin(admin.ModelAdmin): 
    def formfield_for_foreignkey(self, db_field, request, **kwargs): 
     if db_field.name == 'author': 
      kwargs['initial'] = request.user.id 
     return super(MyModelAdmin, self).formfield_for_foreignkey(
      db_field, request, **kwargs 
     ) 
+2

只是一個方面說明:我認爲在一般情況下你不需要這行'return db_field.formfield(** kwargs)'。 – naktinis 2013-02-28 14:33:12

+0

我認爲@naktinis是正確的,當你不使用它時,grappelli的autocomplete_lookup_fields工作 – iskorum 2013-05-15 14:43:59

+0

謝謝 - 我同意並刪除了該行。 – 2014-01-27 05:04:42

0

你可以重寫你的模型沒有顯示作者,如果您正在編輯的對象是新的,因爲它應該被設置爲當前用戶且僅當您正在編輯的對象不秀場的管理的一部分?

您可以通過重寫ModelAdmin的get_form方法來完成此操作。