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 =当前用户。
谁能帮我这个,谢谢!
我从网上搜索过,然后得到了解决方案: 我更新了刚才粘贴的代码。 谢谢大家。
答案 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只提供需要手动点击的过滤器,我想默认自动过滤模型