【问题标题】:Django old issue: Get current user in modelDjango老问题:获取模型中的当前用户
【发布时间】:2012-11-16 08:56:06
【问题描述】:

首先我很抱歉问这个问题,我是 django 的新用户。我只通过models.Model设置我的项目

   ##models.py
    class Task(models.Model):
        Name = models.CharField('Title', max_length=200)
        Notes = models.TextField('Description',max_length=2000, null=True)
        Creator = models.ForeignKey(User, related_name='TaskCreator', null=True, blank=True)
        def __unicode__(self):
            return self.Name

   ##admin.py
   class TaskAdmin(admin.ModelAdmin):
          list_display = ['Name', 'Owner','EstEndTime','LastModifiedTime','Statu']

   admin.site.register(Task,TaskAdmin)

我为我的网站使用 django 的默认管理员,我不使用我自己的任何模板。现在,当用户登录并要创建任务时,我想由当前用户设置创建者默认值。但我不知道如何在models.Model 中获取当前用户。 我从网络上查了一些资料,比如http://chewpichai.blogspot.tw/2007/09/using-user-info-outside-request-in.html,但是还是不行。那么谁能告诉我在没有请求的情况下在models.py文件中获取当前用户的方法。 它困扰了我很长时间,我真的希望有人可以帮助我。谢谢

【问题讨论】:

  • 我的回答不正确,我读错了你的问题。对不起。
  • 如果可以的话,我会补充一点,类属性应始终以小写字符开头。按照惯例,大写字母用于类名。

标签: python django model


【解决方案1】:

您需要覆盖管理类中的save_model。

   class TaskAdmin(admin.ModelAdmin):
          list_display = ['Name', 'Owner','EstEndTime','LastModifiedTime','Statu']


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

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

【讨论】:

  • 感谢您的回复,由于我是新人,您能否回答得更详细一些。
  • def save_model(self, request, obj, form, change): obj.user = request.user obj.save() in thie function,我如何设置 Task.Creator?
  • 现在我有另一个问题,我希望任务模型按故障过滤器显示,而不是通过单击在 modelAdmin 中设置的过滤器选项,如下所示:class TaskAdmin(admin.ModelAdmin): list_display = ['Name','Owner','EstEndTime','LastModifiedTime','Statu'] search_fields = ['Name'] list_filter=('Statu','Project',DecadeByOwer,)
  • @jimwan 我不明白,但如果是另一个问题,请开始一个新问题,而不是我们在 cmets 中讨论 :)
  • @YadenST,好的,这是该问题的链接stackoverflow.com/questions/13599359/…。在那个问题中,我已成功按 model.Manager 过滤,但我只能按某个用户而不是当前用户进行过滤。你能告诉我如何改进它以使 Task 对象项不显示所有任务,而是显示当前用户的任务。
猜你喜欢
  • 2012-06-15
  • 1970-01-01
  • 2016-04-06
  • 2017-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多