Tôi có một mô hình Django đơn giản như:Filtering Django quản lý bởi Null/Is Not Null
class Person(models.Model):
referrer = models.ForeignKey('self', null=True)
...
Trong ModelAdmin của mô hình này, làm thế nào tôi sẽ cho phép nó được lọc bởi hay không giới thiệu là null? Theo mặc định, việc thêm liên kết giới thiệu vào list_filter làm cho trình đơn thả xuống được hiển thị liệt kê mỗi bản ghi người, có thể là hàng trăm nghìn, ngăn trang tải một cách hiệu quả. Ngay cả khi nó tải, tôi vẫn không thể lọc theo tiêu chí tôi muốn.
tức là làm cách nào để tôi sửa đổi điều này để danh sách thả xuống chỉ liệt kê các lựa chọn "Tất cả", "Null" hoặc "Không phải là" không?
Tôi đã xem một số yêu cầu posts để thực hiện điều gì đó tương tự bằng cách sử dụng các lớp con FilterSpec tùy chỉnh, nhưng không ai trong số họ giải thích cách sử dụng chúng. Vài người tôi đã thấy xuất hiện để áp dụng cho tất cả các lĩnh vực trong tất cả các mô hình, mà tôi sẽ không muốn. Hơn nữa, có tài liệu zero cho FilterSpec, điều này khiến tôi lo lắng, vì tôi không muốn đầu tư nhiều mã tùy chỉnh được gắn với một số lớp nội bộ tạm thời có thể biến mất trong bản phát hành tiếp theo.
Trong 1,4 có '' BooleanFieldListFilter'' sẽ làm điều này theo mặc định. '' list_filter = (('myfield', BooleanFieldListFilter), 'other_field', 'other_field2') ''. Trong các trường không boolean nó đạt được hiệu quả tương tự như null/không null. –
@KyleMacFarlane Có vẻ như không hoạt động đối với trường DateTime mặc dù – Kos
Sử dụng 1,6 nó dường như cũng không hoạt động đối với ForeignKeys. –