2011-04-12 45 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方法来完成此操作。