2011-09-29 34 views
7

tôi có mô hình nhưDjango mô hình inline quản trị cho tài

class Employer(models.Model): 
    create_user = models.ForeignKey(User,unique=False,null=True, related_name='%(class)s_user_create') 
    update_user = models.ForeignKey(User,unique=False,null=True, related_name='%(class)s_user_update') 

và tôi muốn liệt kê tất cả Employer đối tượng trong khi tôi đang ở các chi tiết của người dùng trong bảng quản trị Django.

Tôi đã viết một cái gì đó giống như

admin.py

class EmployerInline(admin.TabularInline): 
    model = Employer 

class UserAdmin(admin.ModelAdmin): 
    inlines = [ 
       EmployerInline 
    ] 

admin.site.register(UserAdmin) 

nhưng nó mang lại cho tôi lỗi như 'MediaDefiningClass' object is not iterable

Làm thế nào tôi có thể liệt kê sử dụng lao động được tạo ra bởi một người dùng spesific trong khi tôi đang tìm kiếm chi tiết của người dùng?

Cảm ơn

Trả lời

10

Lỗi đặc biệt mà bạn đề cập đến dường như không có bất cứ điều gì để làm với những gì đang xảy ra trong mã của bạn, vì vậy tôi không chắc chắn về điều đó đặc biệt. Tuy nhiên, bạn có các lỗi khác ở đây, do đó, khả năng sửa chữa những lỗi đó cũng sẽ khắc phục được lỗi đó.

Trước tiên, bạn cần chỉ định fk_name trên EmployerInline của mình. Django giải quyết chìa khóa nước ngoài tự động trong hầu hết các trường hợp, nhưng vì bạn có hai phím nước ngoài cho cùng một mô hình, bạn phải cung cấp cho Django một số trợ giúp.

class EmployerInline(admin.TabularInline): 
    model = Employer 
    fk_name = 'create_user' 

Thứ hai, bạn có thể vừa bỏ qua, nhưng bạn phải hủy đăng ký User trước khi đăng ký. Bạn cũng cần chỉ định mô hình khi đăng ký:

admin.site.unregister(User) 
admin.site.register(User, UserAdmin) 
+0

hoạt động như một sự quyến rũ. – brsbilgic

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