Django模型可以自动从管理界面填写当前经过身份验证的用户吗?

时间:2009-05-13 21:49:13

标签: django django-models django-admin

我希望能够在管理界面中使用Notes时,使用Note包含对当前已通过身份验证的用户的引用。该模型看起来像:

from django.db import models
from django.contrib.auth.models import User
from datetime import datetime



class Note(models.Model):
    datetime = models.DateTimeField(default=datetime.now)
    author   = models.ForeignKey(User, default=authenticated_user)
    note     = models.TextField()

    def __unicode__(self):
        return unicode(self.author) + u' - ' + unicode(self.datetime)

用户应该看到的唯一字段是注释文本字段。日期时间和作者应该由模型,管理界面或其他任何东西自动填写。可以这样做吗?有人有一些示例代码吗?

谢谢!

1 个答案:

答案 0 :(得分:4)

通过为日期时间字段定义指定auto_now_add=True,可以设置日期。

要在admin中将用户设置为save,请在管理员类中执行以下操作:

class NoteAdmin(admin.ModelAdmin):
    ...usual admin options...

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