我的问题是:我有一个可以选择参加会议的人的列表。不活动的帐户不应显示在该列表中。我想将这些帐户从可能的用户列表中过滤掉
这是现在的代码:
class StudioMeetingNoteAdmin(admin.ModelAdmin):
fields = ('this_is_test',)
fieldsets = [
('Tijden', {'fields': ['meeting_start_time', 'meeting_end_time']}),
('Wie is de voorzitter/notulist', {'fields': [('chairman', 'secretary')]}),
('Opkomst', {'fields': [('attending_persons', 'absent_persons')]}),
]
inlines = [OpeningAndParticularitiesInline, ActionListPointInline, RemarksPriorMeetingInline, IssuesToAddressInline, OurNextMoveInline, QuestionRoundInline]
list_filter = ['meeting_start_time']
search_fields = ['meeting_start_time']
list_display = ('meeting_start_time', 'chairman', 'secretary')
字段attending_persons
应该被过滤,因此不应该显示非活动的用户帐户。
我尝试用下面链接中显示的方法替换“ attending_persons”,但这会导致错误。
https://docs.djangoproject.com/en/1.10/ref/contrib/admin/
class AuthorAdmin(admin.ModelAdmin):
fields = ('name', 'title', 'view_birth_date')
def view_birth_date(self, obj):
return obj.birth_date
view_birth_date.empty_value_display = '???'
您无法使用fieldset
所以我的问题是:如何显示过滤列表以供选择?
谢谢
答案 0 :(得分:0)
您应该覆盖get_form
方法:
class StudioMeetingNoteAdmin(admin.ModelAdmin):
# same as above ...
def get_form(self, request, obj=None, **kwargs):
form = super(StudioMeetingNoteAdmin, self).get_form(request, obj, **kwargs)
form.base_fields['attending_persons'].queryset = User.objects.filter(active=True)
return form
如docs中所述:
fields选项接受与list_display相同类型的值,除了不接受 可调用对象 。模型和模型管理方法的名称仅在列在readonly_fields中的情况下使用。
这是针对ModelAdmin.fields
的,但是相同的规则将适用于ModelAdmin.fieldsets