不希望在django中显示模型对象的所有项目

时间:2012-11-28 06:48:09

标签: python django

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中有两个模型,每个任务都有一个项目。但是当我进入任务页面时,它将默认列出所有任务。所以我希望它只列出当前用户的任务by default。这是Task.Owner =当前用户。 谁能帮我这个,谢谢!

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

3 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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

答案 2 :(得分:0)

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