2011-11-22 29 views
6

Tôi muốn giới hạn các lựa chọn cho ForeignKey trong giao diện người dùng quản trị bằng cách sử dụng limit_choices_to; tuy nhiên, tôi muốn đạt được điều này mà không thay đổi mô hình, vì mô hình được đưa vào từ một thư viện, rằng tôi không có quyền kiểm soát. Cách tự động đạt được điều này là gì? Hoặc tôi có thể sử dụng một trường trên mô hình quản trị để có thể đạt được điều này?Hạn chế lựa chọn quản trị Sử dụng limit_choices_to

Cảm ơn, --Eytan

Trả lời

11

Django cung cấp một cái móc admin để sửa đổi một phím nước ngoài queryset: formfield_for_foreignkey

class MyModelAdmin(admin.ModelAdmin): 
    def formfield_for_foreignkey(self, db_field, request, **kwargs): 
     if db_field.name == "car": 
      kwargs["queryset"] = Car.objects.filter(owner=request.user) 
     return super(MyModelAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) 
+0

Thank you very much Yuji! Điều này đã giúp tôi đạt được những gì tôi đang tìm kiếm. Tôi đoán cách thích hợp để làm sẽ được thông qua tùy biến ModelForm cho ModelAdmin, nhưng điều này chắc chắn là dễ dàng hơn :) – daniyalzade

+0

@daniyalzade không có vấn đề! Điều này _is_ cách thích hợp, hoặc tại sao khác là nó trong tài liệu quản trị django? Việc ghi đè thuộc tính 'form' nên được thực hiện khi các phương thức được cung cấp bởi django là không đủ:) 2 xu của tôi. –

Các vấn đề liên quan