2010-06-07 48 views
0

我試圖找到一種方法來使用queryset過濾掉Django Admin中的對象行。使用Queryset過濾包含Admin的行 - Django

e.g. Person.objects.filter(Q(name='John')|Q(surname='Doe')) 

我發現很複雜。


任何想法?

+0

你的意思是你想做一些類似於搜索的事情,或者你希望一般只顯示更改列表中的選定對象? – 2010-06-07 12:59:26

+0

@lazerscience是的,像搜索,但使用上面的查詢集。我的意圖是搜索匹配姓名或姓氏的所有人員行。 – RadiantHex 2010-06-07 13:57:08

+0

不明白...你能告訴我更多關於這個問題嗎? – Saff 2010-06-07 16:45:21

回答

0

您可能可以通過在您的modeladmin實例上重寫queryset()方法來實現此目的。見http://code.djangoproject.com/browser/django/trunk/django/contrib/admin/options.py?rev=15347#L196

# untested code 
class MyModelAdmin(admin.ModelAdmin): 
    def queryset(self, request): 
     qs = super(MyModelAdmin, self).queryset(request) 
     return qs.filter(Q(name='John') | Q(surname='Doe')) 

這隻會影響到結果,並與註冊的ModelAdmin的模式,但你很可能繼承它作爲一個起點,其他的ModelAdmin類,以保持乾燥。我並不是說這是個好主意。