2010-10-30 21 views
6

Làm cách nào để tạo bộ lọc trong Quản trị Django để chỉ hiển thị bản ghi có giá trị số nguyên nằm giữa hai giá trị? Ví dụ: nếu tôi có một Người mẫu, có thuộc tính tuổi và tôi chỉ muốn hiển thị các bản ghi Người ở độ tuổi từ 45 đến 65.Django Admin: Làm cách nào để lọc trên trường số nguyên cho phạm vi giá trị cụ thể

+0

tốt hơn phù hợp với http://webmasters.stackexchange.com/questions – Svisstack

+3

@Svisstack Tôi không nghĩ vậy; đây là một câu hỏi lập trình. – FunLovinCoder

+0

vâng tôi biết nhưng linh hoạt hơn cho quản trị viên web – Svisstack

Trả lời

0

Tôi chỉ muốn một phiên bản được lọc của chế độ xem danh sách, mà bạn truy cập thông qua một liên kết (nói trong giao diện danh sách), ví dụ để chỉ xem các mặt hàng liên quan của một người mẫu, bạn làm điều gì đó như thế này:

def admin_view_receipts(self, object): 
    url = urlresolvers.reverse('admin:invoice_%s_changelist'%'receipt') 
    params = urllib.urlencode({'invoice__id__exact': object.id}) 
    return '<a href="%s?%s">Receipts</a>' % (url, params) 
admin_view_receipts.allow_tags = True 
admin_view_receipts.short_description = 'Receipts' 

này sẽ đưa bạn đến một cái nhìn danh sách cho 'Reciepts', nhưng chỉ những người được liên kết với Hóa đơn đã chọn.

Nếu bạn muốn có một bộ lọc hiển thị ở khung bên trái, bạn có thể try this snippet hoặc this

1

Bạn có thể lọc lĩnh vực này một số những gì như thế này bằng cách sử dụng queryset() Chức năng ... Tôi đã sử dụng SimpleListFilter

def queryset(self, request, queryset): 
     filt_age = request.GET.get('parameter_name') 
     return queryset.filter(
        age__range=self.age_dict[filt_age] 
       ) 

Và tạo dict trong lookups() và gửi lại Theo tuổi

def lookups(self, request, model_admin): 
    return [ 
     (1, '5-21'), 
     (2, '22-35'), 
     (3, '35-60') 
    ] 
Các vấn đề liên quan