2011-02-08 29 views
6

Tôi đang sử dụng một quản trị viên StackedInline Django, như sau:Django: Tiêu đề thân thiện hơn cho StackedInline cho tự động tạo thông qua mô hình?

class BookInline(admin.StackedInline): 
    model = Book.subject.through 
    verbose_name = 'Book' 
    verbose_name_plural = 'Books with this subject' 

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

Tất cả các tác phẩm, nhưng tiêu đề là khá xấu xí:

Books With This Subject 
Book: Book_subject object 

Bất cứ ai cũng biết làm thế nào tôi có thể thoát khỏi, hoặc thay đổi , phần Book_subject object?

cảm ơn!

+0

Câu trả lời có thể có tại đây: http://stackoverflow.com/questions/5086537/how-to-omit-object-name-from-djangos-tabularinline-admin-view –

Trả lời

8

Tôi chưa bao giờ sử dụng trường m2m như thế này, vì vậy cảm ơn! Đã học được điều gì đó mới mẻ.

tôi thấy 2 cách để có được xung quanh các vấn đề:

1: chỉ cần gán __unicode__ chức năng với một chức năng mới

class MyInline(admin.TabularInline): 
    MyModel.m2m.through.__unicode__ = lambda x: 'My New Unicode' 
    model = MyModel.m2m.through 

2: thiết lập một proxy model cho mô hình m2m.through và sử dụng mô hình đó thay vì

class MyThrough(MyModel.m2m.through): 
    class Meta: 
     proxy = True 
    def __unicode__(self): 
     return "My New Unicode" 

class MyInline(admin.TabularInline): 
    model = MyThrough 
+0

Ah, cả hai mô hình 'Book' và' Subject' của tôi đã có phương thức '__unicode__' được định nghĩa. Tuy nhiên, điều này là sử dụng 'Book.subject.through' (chủ đề là một ManyToManyField trên Sách) vì vậy tôi không nghĩ rằng có bất kỳ phương pháp unicode để xác định. Bất kỳ ý tưởng làm thế nào tôi có thể nhận được vòng này? – AP257

+0

Tôi thậm chí không biết bạn có thể làm điều đó với m2m, cảm ơn! Có, tìm thấy một giải pháp. đang cập nhật –

+0

Tuyệt vời, cảm ơn bạn! – AP257

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