0
class TaskManager(models.Manager):
    def get_query_set(self):
         return super(TaskManager, self).get_query_set().filter(Owner='jim')

class Task(models.Model):
    Name = models.CharField('Title', max_length=200)
    Notes = models.TextField('Description',max_length=2000, null=True)
    project = models.ForeignKey(Project,null=True, blank=True)
    Owner = models.CharField(max_length=100, choices=owner_set)

    objects =  TaskManager()
    def __unicode__(self):
    return self.Name

我的 models.py 中有两个模型,每个任务都有一个项目。但是当我进入任务页面时,它会默认列出所有任务。所以我希望它只列出当前用户的 Task by default。就是Task.Owner=当前用户。谁能帮帮我,谢谢!

我从网上搜索然后得到解决方案:我更新了我刚刚粘贴在上面的代码。谢谢大家。

4

3 回答 3

2

为什么不这样做!

Task.objects.filter(owner = current_user)

更新:

1)如果您想过滤您自己的自定义模板,请将其添加到您的视图代码中

2) 如果您尝试自定义管理站点,请执行此操作,

from django.contrib import admin
from models import MyModel

class TaskAdmin(admin.ModelAdmin): 

    def queryset(self, request): 
        return super(TaskAdmin, self).queryset(request).filter(owner = request.user)

admin.site.register(Task, TaskAdmin)
于 2012-11-28T06:58:09.967 回答
1

在 ModelAdmin 类中,您应该添加:

class TaskAdmin(...):

    def queryset(self, request):
         qs = super(TaskAdmin, self).queryset(request)
         return qs.filter(Owner=request.user)

这将覆盖默认查询集

更多信息: https ://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.queryset

于 2012-11-28T16:13:44.803 回答
0

我只是想修改一个模型的默认过滤器,使模型列表不是没有modelAdmin的所有项目,因为modelAdmin只是提供了一个需要手动点击的过滤器,我想默认自动过滤模型

于 2012-11-28T07:47:14.030 回答