Tôi đang cố gắng tìm ra cách để hiển thị RelativeInline sau đây chỉ khi Person.is_member là True.Điều kiện nội tuyến trong quản trị Django?
admin.py hiện tại:
class RelativeInline(admin.TabularInline):
model = Relative
fk_name = 'member'
class PersonAdmin(admin.ModelAdmin):
inlines = [RelativeInline,]
ordering = ('first_name',)
list_filter = ('is_member',)
search_fields = ('first_name', 'last_name',)
date_hierarchy = 'member_date'
list_display = ('first_name', 'last_name', 'is_member', 'member_date', 'photo')
admin.site.register(Person, PersonAdmin)
Các gợi ý duy nhất mà tôi đã có thể tìm thấy là tôi có thể có thể ghi đè lên get_formset, nhưng tôi không thể tìm thấy một ví dụ điển hình, vì vậy nỗ lực yếu ớt của tôi không hoạt động.
Dưới đây là thất bại của tôi:
class RelativeInline(admin.TabularInline):
model = Relative
fk_name = 'member'
class PersonAdmin(admin.ModelAdmin):
ordering = ('first_name',)
list_filter = ('is_member',)
search_fields = ('first_name', 'last_name',)
date_hierarchy = 'member_date'
list_display = ('first_name', 'last_name', 'is_member', 'member_date', 'photo')
def get_formset(self, request, obj=None, **kwargs):
if obj.is_member:
inlines = [RelativeInline,]
return super(PersonAdmin, self).get_formset(request, obj, **kwargs)
admin.site.register(Person, PersonAdmin)
Không có lỗi được tạo ra bởi mã này, nhưng không có nội tuyến xuất hiện bất kể có hay không Person.is_member là True hoặc False.
Cập nhật: Một người bạn đề nghị tôi thử thay đổi:
inlines = [RelativeInline,]
tới:
self.inlines = [RelativeInline,]
nhưng vô ích. Tôi cũng đã thử:
PersonAdmin.inlines = [RelativeInline,]
nhưng kết quả là như nhau - không có lỗi, không có nội tuyến.
cập nhật cho năm 2014 và django 1.6: 'cho nội tuyến trong self.get_inline_instances (yêu cầu, obj):' – imposeren