2016-04-10 20 views
0

Django takımının yönetici filtresini kullanırken, bir değer seçtiğimde alan adı kaybolur. Örneğin bakarak: Birisi "Seçimler" alanını seçtiğinde resimde görüldüğü gibi http://djangosuit.com/admin/examples/kitchensink/ enter image description heredjango suit yönetici filtresi - aramaları geçersiz kılmanın en kolay yolu

, onlar sadece (Uzun) seçili değerini görebilirsiniz.

Bu bazen kötü olabilir; Örneğin, "stokta" olan bir boole alanı için yalnızca 'Evet'i görürsünüz, ancak' Stokta: Evet'i görmeyi tercih ederim. Özel bir filtre oluşturabildiğimi ve arama tuples'u belirleyebileceğimi biliyorum, ancak bunu yapmanın daha temiz ve daha temiz bir yolu olup olmadığını merak ediyorum.

orada ne kadar gereksiz kod göstermek için:

class InventoryFilter(admin.SimpleListFilter): 
    title = 'is_in_stock' 
    parameter_name = 'is_in_stock' 
    def lookups(self, request, model_admin): 
     return (('Yes', 'in stock:Yes'),('No', 'in stock:No')) 

    def queryset(self, request, queryset): 
     return queryset.filter(is_in_stock=True) 


@admin.register(Inventory) 
class InventoryAdmin(admin.ModelAdmin): 
    list_display = ('is_in_stock',) 
    list_filter = ('is_in_stock',) 

ve her değişken için bunu yapmak zorunda! Daha zeki bir yol arıyorum. Teşekkürler.

+0

Özel bir filtreyle sorunu göremiyorum. Bu çok fazla kod mu? –

cevap

0

Başka bir çözüm, şablonu genişlet ve açılan alandan önce alan adını göster (alanın bir değeri varsa).

+0

Bir şekilde sorgu anahtarını şablona iletmem gerekiyor. Tek yol, yapıcıda bir anahtar kelime bağımsız değişkeni kullanıyor olabilir, ancak sorgu anahtarının sorguya nasıl dönüştürüleceğini anlayamıyorum. Görüyorsun, yüzlerce tane olduğundan, yönetici sayfamdaki her filtre için bunu yapmak istemiyorum. – max

+0

Her filtre için değil, şablonun bir forloop olduğunu;) –

İlgili konular