2012-01-18 33 views
8

Tôi có một mô hình (Nút) được sắp xếp theo ngày trong quản trị viên, vì vậy các nút mới nhất được hiển thị trước tiên. Điều này là tốt.Quản trị Django chọn thứ tự khác với thứ tự mẫu mặc định

Mô hình tương tự (Nút) được tham chiếu bởi một mô hình khác (Thiết bị). Khi chỉnh sửa một thiết bị có một danh sách các nút (trong một lựa chọn HTML) cũng được sắp xếp theo ngày. Tôi muốn lựa chọn này được sắp xếp theo tên chứ không phải theo ngày.

Có thể có hai phương pháp đặt hàng khác nhau, một cho danh sách đối tượng và một cho hộp chọn không?

Cảm ơn.

Trả lời

6

Điều đơn giản nhất sẽ được ghi đè lên các phương pháp formfield_for_foreignkey trong ModelAdmin cho Device, một cái gì đó giống như

def formfield_for_foreignkey(self, db_field, request, **kwargs): 
    if db_field.name == 'node': 
     kwargs['queryset'] = Node.objects.order_by('name') 
    return super(DeviceAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) 

(Tôi giả định một số lượng hợp lý ở đây. Hy vọng rằng nó là rõ ràng!)

Tương tự có formfield_for_manytomany.

+0

Đây là phương pháp ưa thích của tôi. –

+1

cảm ơn, nó hoạt động như bạn có thể thấy ở đây: https://github.com/ninuxorg/nodeshot/issues/65 – nemesisdesign

2

Các bạn đã thử một cái gì đó như:

class Node 
     name = ... 
     date = ... 
     fields .... 

     class Meta: 
      order_with_respect_to='Device' 
      ordering = ('Device', 'name') 
+0

tôi không biết tùy chọn đó, +1 để dạy tôi điều gì đó mới mẻ, nhưng tôi không nghĩ rằng nó giải quyết vấn đề của tôi – nemesisdesign

+0

Giải pháp này vẫn sẽ cần một cái gì đó giống như những gì được đề cập trong câu trả lời chấp nhận để có được