2013-04-03 28 views
6

Tôi đang xây dựng một ứng dụng web theo dõi những gì một cuốn sách thư viện mà một người kiểm tra. Tôi có các mô hình sau:DJANGO: Làm thế nào để list_display một thuộc tính khóa ngoài đảo ngược?

class Person(models.Model): 
    name = models.CharField(max_length=100) 
    def __unicode__(self): 
     return self.name 

class Book(models.Model): 
    name = models.CharField(max_length=100) 
    person = models.ForeignKey(Person) 
    checkout_date = models.DateTimeField('checkout date') 
    def __unicode__(self): 
     return self.name 

Trên trang "danh sách thay đổi" của Quản trị viên cho Người, tôi muốn hiển thị những cuốn sách của người đó. Đây có phải là thứ có thể làm được không? Nếu vậy, làm thế nào?

admin.py

class BookAdmin(admin.ModelAdmin): 
    list_display = ('name', 'checkout_date', 'person') 

class PersonAdmin(admin.ModelAdmin): 
    list_display = ('name', 'book__name') 

Trả lời

13

Quản trị viên Django thực sự linh hoạt, bạn có thể chỉ cần thêm phương thức trợ giúp cho nó.

class PersonAdmin(admin.ModelAdmin): 
    list_display = ('name', 'books') 

    def books(self, obj): 
     return ",".join([k.name for k in obj.book_set.all()]) 
3

Thêm một inlinemodel admin

class BookInline(admin.TabularInline): 
    model = book 

class PersonAdmin(admin.ModelAdmin): 
    inlines = [BookInline, ] 

đó phải bao trùm nó.

+0

Tôi nghĩ rằng điều này không thể được sử dụng cho 'list_display'. Điều này là dành cho danh sách nội tuyến. –

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