0
class MyUserAdminForm(forms.ModelForm):
class Meta:
    model = Users

group = forms.ModelMultipleChoiceField(
    queryset=Groups.objects.filter(domain__user=3),
    widget=forms.CheckboxSelectMultiple,
)

class UserAdmin(admin.ModelAdmin):

list_display = ('login', 'company', 'userType')
form = MyUserAdminForm
filter_horizontal = ('group',)


admin.site.register(Users, UserAdmin)

我正在使用 MyUserAdminForm 来自定义管理界面。我必须将 User 表的 pk 作为参数传递给过滤器

queryset=Groups.objects.filter(domain__user=3)

我应该传递用户表的 pk 而不是硬编码的“3”。想知道如何实现这一目标?

4

1 回答 1

1

正在编辑的对象在参数中提供给表单的构造instance函数。您应该能够使用它来过滤组选择:

class MyUserAdminForm(forms.ModelForm):
    class Meta:
        model = Users

    group = forms.ModelMultipleChoiceField(
            queryset=Groups.objects.all(),
            widget=forms.CheckboxSelectMultiple,
    )

    def __init__(self, *args, **kwargs):
        super(MyUserAdminForm, self).__init__(*args, **kwargs)
        if kwargs.has_key('instance'):
            qs = Group.objects.filter(domain__user=kwargs['instance'].pk)
            self.fields['group'].queryset = qs
于 2009-03-14T14:46:16.777 回答