不要在django中显示模型对象的所有项目 [英] Don't want show all items of a model object in django

查看:141
本文介绍了不要在django中显示模型对象的所有项目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


def get_query_set(self)
返回超级(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都有一个项目。但是当我进入任务页面时,它将默认列出所有任务。所以我希望它默认仅列出当前用户的任务 。这是Task.Owner =当前用户。
谁可以帮助我,谢谢!



我从网上搜索,然后得到解决方案:
我更新我粘贴的代码就在上面。
感谢所有人。

解决方案

为什么不这样做?

  Task.objects.filter(owner = current_user)

更新:



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



2)如果您尝试自定义管理网站,请执行以下操作:

  from django.contrib import admin 
from模型导入MyModel

class TaskAdmin(admin.ModelAdmin):

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

admin.site.register(Task,TaskAdmin)


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

I have two models in my models.py, every Task has a project. But when i enter the Task page, it will list all the task by default. So i want it to list only the current user's Task by default. It is that the Task.Owner=current user. Who can help me with this, thanks!

I have searched from the net and then get the solution: I update the code i pasted just now above. Thanks for all.

解决方案

Why not do this!

Task.objects.filter(owner = current_user)

Update:

1) If you want to filter in you own custom template add this to your view code

2) If you are trying to customize the admin site do this,

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)

这篇关于不要在django中显示模型对象的所有项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆