2012-11-28 52 views
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 =當前用戶。 誰能幫助我,謝謝!不想在django中顯示模型對象的所有項目

我已經從網上搜索,然後得到解決方案: 我更新我剛剛粘貼上面的代碼。 謝謝大家。

+0

您可以發佈您的網址。 py文件? – Talvalin

+0

「任務頁面」是您定義的視圖嗎? – monkut

回答

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) 
+0

把這段代碼放在哪個地方? – jimwan

+0

如果您有自定義視圖,則必須將其放置在那裏 –

+0

如果我沒有自定義視圖,我無法設置過濾器? – jimwan

0

我只是想修改模型的默認過濾器,使模型列表不是所有的項目沒有modelAdmin,因爲modelAdmin只是提供了一個過濾器,需要手動點擊,我想過濾默認程序自動

+0

如果您有其他信息,它應該添加爲原始帖子的編輯或評論,而不是作爲答案! – Talvalin

+0

對不起,我不熟悉這個論壇的規則 – jimwan

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

+0

點擊過濾,可以在html模板中配置。你應該使用管理員,如果這是你唯一的問題:) – YardenST

+0

非常感謝,它的工作原理 – jimwan