万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

DjangoのAdminでの外部キーをフィルター

https://stackoverflow.com/questions/18304932/django-inline-model-admin-filter-foreign-field

このようformに対してカスタムしたフォームを設定

class HogeAdmin(admin.ModelAdmin):

    """ HogeのAdmin """

    form = HogeAdminInlineForm

そのクラスを作る

class HogeAdminInlineForm(forms.ModelForm):
    """ フィルターフォーム """
    def __init__(self, *args, **kwargs):
        super(HogeAdminInlineForm, self).__init__(*args, **kwargs)
        # リクエストはこうやって取得する
        self.request = kwargs.pop("request")
        try:        
            self.fields['column_name'].queryset = Bar.objects.filter(user=self.request.user)
        except:
            self.fields['column_name'].queryset = Bar.objects

requestはkwargs.pop("request")こうやって取得した。 http://stackoverflow.com/questions/8841502/how-to-use-the-request-in-a-modelform-in-django