Khi xem danh sách thay đổi quản trị cho một mô hình, có thể tạo các cột tương ứng với khóa ngoài liên kết đến các trang tương ứng của chúng không? Một ví dụ đơn giản là tôi có một đối tượng Foo có chứa Bar như một khóa ngoại. Nếu tôi đang xem danh sách thay đổi quản trị cho Foo (và nó được thiết lập để bao gồm Bar trong cột display_list), cột chính sẽ liên kết đến trang chỉnh sửa của cá thể Foo trong khi cột Bar sẽ liên kết đến trang chỉnh sửa của cá thể Boo. Tôi hiểu tôi có thể ghi đè lên các mẫu được sử dụng, nhưng tôi đã tò mò nếu có một giải pháp mà không yêu cầu đó.Thay đổi liên kết danh sách thành trang thay đổi khóa ngoài
Trả lời
Bạn có thể xác định phương thức tùy chỉnh để sử dụng trong danh sách thay đổi trả về HTML của liên kết.
from django.core.urlresolvers import reverse
class MyFooAdmin(admin.ModelAdmin):
list_display = ('foo', 'bar_link')
def bar_link(self, obj):
url = reverse('admin:myapp_bar_change', args=(obj.pk,))
return '<a href="%s">Edit Bar</a>' % url
bar_link.allow_tags = True
Một vấn đề với câu hỏi của bạn như sau - nếu Foo có liên kết đến một thanh, để bạn có thể liên kết đến trang chỉnh sửa cho thanh đó. Tuy nhiên, mỗi thanh liên kết với nhiều foos, do đó, nó không có ý nghĩa để yêu cầu một liên kết đến 'trang chỉnh sửa của cá thể Foo'. liên kết đến trang sách thay đổi cho Foo với bộ lọc thiết lập để chỉ hiển thị các trường hợp liên kết đến Bar này những gì bạn có thể làm là:
def foo_link(self, obj):
url = reverse('admin:myapp_foo_changelist')
return '<a href="%s?bar=%s">See Foos</a>' % (url, obj.pk)
foo_link.allow_tags = True
Tôi tìm thấy và thích câu trả lời của Daniel, mặc dù các biến thể danh sách thay đổi xóa đi mọi thay đổi bạn đã thực hiện. Vì vậy, đây là một cách để khắc phục điều đó:
Trước tiên, bạn cần phải nhận được một tham chiếu đến các yêu cầu, bạn có thể làm điều đó bằng cách gói changelist_view
hoặc queryset
như tôi đã làm:
class CountryAdmin(ModelAdmin):
model = Country
list_display = ('pk', 'continent_changelist')
# ...
def queryset(self, request):
self._get_params = request.GET
return super(CountryAdmin, self).queryset(request)
def continent_changelist(self, obj):
url = reverse('admin:yourapp_country_changelist')
querystring = self._get_params.copy()
querystring['continent__id__exact'] = obj.continent.pk
return u'<a href="{0}?{1}">{2}</a>'.format(
url, querystring.urlencode(), obj.continent)
continent_changelist.allow_tags = True
Điều đó sẽ cung cấp cho bạn một bộ lọc bên trong các hàng changelist. Tôi đã trả lời câu hỏi này trong một câu hỏi khác, nhưng đây là nơi tôi thực sự đến trước, vì vậy muốn ghi lại nó ở đây. :-)
- 1. Thay đổi một phần tử trong một danh sách sẽ thay đổi nhiều danh sách ..?
- 2. regex để thay đổi liên kết href thành chữ thường
- 3. Jquery: Liên kết thay đổi thành nhiều hộp kiểm
- 4. thay đổi màu siêu liên kết uitextview
- 5. Mở rộng Mẫu quản trị Django - thay đổi danh sách thay đổi
- 6. Django quản trị danh sách thay đổi lọc/liên kết đến các mô hình khác
- 7. Thay đổi trang có thể thay đổi trang gọi lại
- 8. Thay đổi bảng để cung cấp ràng buộc khóa ngoài
- 9. Javascript: Cần giải quyết: Internet Explorer thay đổi văn bản liên kết khi thay đổi href
- 10. Django-admin: Cách hiển thị liên kết đến trang thông tin đối tượng thay vì chỉnh sửa biểu mẫu, trong danh sách thay đổi bản ghi?
- 11. Danh sách thay đổi svn: cách giới hạn hoạt động đối với danh sách thay đổi "mặc định"?
- 12. Danh sách liên kết danh sách liên kết trong Java
- 13. Thay đổi màu sắc liên kết di chuột qua liên kết IE9
- 14. Đặt tất cả các tệp đã thay đổi vào danh sách thay đổi trong SVN
- 15. SQL Server: thay đổi khóa chính với hàng liên quan
- 16. Tôi có phải đặt thuộc tính khóa ngoài bằng tay khi tôi thay đổi liên kết không?
- 17. Tạo thuộc tính Danh sách không thể thay đổi bên ngoài
- 18. thay đổi liên kết giới thiệu của Bài đăng Ajax
- 19. Quản trị viên Django - thay đổi danh sách quyền
- 20. Danh sách thay đổi khác nhau trong subclipse?
- 21. Thay đổi Chuỗi kết nối "Dữ liệu Ngoài" của Excel
- 22. Thay đổi màu hàng trong Danh sách quản trị Django
- 23. Danh sách thay đổi trong IntelliJ IDEA là gì?
- 24. Bootstrap 3.0 gắn với thay đổi danh sách width
- 25. AngularJS xem không thay đổi khi điều hướng liên kết
- 26. Chuyển đổi mảng 2dump thành danh sách các danh sách
- 27. Thay đổi mảng liên kết thành một mảng được lập chỉ mục/nhận Zend_Table_Row_Abstract là không liên kết
- 28. Gerrit: kết hợp nhiều cam kết thành một "thay đổi"
- 29. Thay đổi chuyển đổi trang trên cùng một trang
- 30. django chuyển đổi danh sách các đối tượng thành danh sách các khóa chính
Tôi sẽ thử. Những gì tôi có nghĩa là bằng cách liên kết đến trang thay đổi Foo chỉ là để duy trì liên kết mặc định đến trang thay đổi Foo từ danh sách thay đổi Foo (Tôi thừa nhận tôi đã không rõ ràng với nó). – Adam
Bất kỳ cập nhật nào về điều này trong 1,4 hoặc 1,5 (tôi có nghĩa là điều này trông giống như một bổ sung tuyệt vời cho Django chính nó vì vậy có lẽ nó đã được thêm vào 'contrib.admin')? –