Django1.4怎么在Model里获取当前用户?

炸酱面 发布于 2012/07/31 16:57
阅读 4K+
收藏 2
我有一个文章表,里面有一个字段想保存通过admin添加一篇文章的管理员用户名,但是不知道怎么在models或者admin中定义,因为我掌握的获取用户名的方法只有request,求解。
加载中
0
岭南六少
岭南六少
#自己写的发表博客函数
def add(request):
    if request.method == 'POST':
        user = request.user
        .
        .
        .


1
岭南六少
岭南六少
在admin后台中获取当前登录帐号赋值给user的我也没试过
0
徐小路
徐小路
1,如果有登录,那么可以从你保存登录信息的地方取,比如session 2,如果没登录,那你就直接获取到admin这个用户,user.objects.get(pk=1)
0
岭南六少
岭南六少
#!usr/bin/env python
#coding: utf-8
from django.db import modelsfrom django.contrib.auth.models import User from tagging.fields import TagField
class Category(models.Model):
    class Meta:
        verbose_name = u'分类'
        verbose_name_plural = verbose_name    
    title = models.CharField(u'分类名称',max_length=60)
    created_at = models.DateTimeField(u'修改时间',auto_now=True)
    
    def __unicode__(self):
        return self.title
    
class Blog(models.Model):
    class Meta:
        verbose_name = u'博客'
        verbose_name_plural = verbose_name
        ordering = ['-updated_at','-created_at']
    title      = models.CharField(u'标题',max_length=60)
    content    = models.TextField(u'正文')
    category   = models.ManyToManyField(Category)
    user       = models.ForeignKey(User)     tags       = TagField(verbose_name="标签")
    view_count = models.IntegerField()
    recommend  = models.IntegerField()
    created_at = models.DateTimeField(u'添加时间',auto_now_add=True)
    updated_at = models.DateTimeField(u'修改时间',auto_now=True)
    
    def __unicode__(self):
        return self.title


0
炸酱面
炸酱面

谢谢各位了,我昨晚经过在谷歌和度娘上搜索和自己的不断尝试,已经找到办法了,就是在Admin类中重写save_model方法。因为save_model方法的参数中就有request,所以可以通过request.user.username获取用户名。就像这样:

class ArticleAdmin(admin.ModelAdmin):
    ...
    def save_model(self, request, obj, form, change):
        ...
        if obj.add_user == u'': obj.add_user = request.user.username
        obj.last_edit_user = request.user.username
        obj.save()

返回顶部
顶部