访问django模型上的当前用户ID

时间:2015-04-12 06:23:32

标签: django

我正在覆盖django模型上的save方法,就像这样

def save(self, *args, **kwargs):

我想在save方法中获取当前登录的用户ID。我可以获取当前登录的用户ID吗?

3 个答案:

答案 0 :(得分:0)

在MIDDLEW处的settings.py中添加以下行: “ crum.CurrentRequestUserMiddleware”,

然后进入models.py:

class MyModel(models.Model):

    def save(self, *args, **kwargs):
        userid = crum.get_current_user()
        self.userid = userid.id
        super(PlantSpecies, self).save(*args, **kwargs)

    userid = models.CharField(max_length=45, blank=True, default=crum.get_current_user())
    date = models.DateTimeField(auto_now_add=True)

然后在表单模板中可以隐藏“用户ID”字段。如果您查看数据库,则会看到在提交表单后会自动输入当前的用户ID和日期。

答案 1 :(得分:0)

您可以使用Django ModelAdmin的save_model来代替Model的保存方法。

from django.contrib import admin

class ArticleAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
    obj.user = request.user
    super().save_model(request, obj, form, change)

请点击链接以获取详细信息

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

答案 2 :(得分:-2)

为什么不使用会话来存储用户ID?用户登录后,将用户ID存储在会话变量中,如下所示:

request.session['user_id'] = my_user_id

此处user_id是会话变量的名称,my_user_id将是登录用户的用户ID。有关Django中的会话的更多信息: https://docs.djangoproject.com/en/1.8/topics/http/sessions/