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)

ハードコーディングされた「3」の代わりに、User テーブルの pk を渡す必要があります。これを達成する方法を知りたいですか?

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 に答える