get_form
現在のユーザーでフィルタリングするために、表形式の管理者をオーバーライドしたいと考えています。問題は、エラーが発生していることです。
object has no attribute 'current_user'
Admin.py
class InvoiceDetail(admin.TabularAdmin): form = InvoiceDetailForm model = fa_invoice_lines def get_form(self, request, obj=None, **kwargs): form = super(InvoiceDetail, self).get_form(request, obj, **kwargs) form.current_user = request.user return form class Invoice(admin.ModelAdmin) form = InvoiceForm inlines = [InvoiceDetail,]
フォーム.py
class InvoiceDetailForm(forms.ModelForm): def __init__(self, *args, **kwargs): super(InvoiceDetailForm, self).__init__(*args, **kwargs) self.fields['item'].queryset = fa_items.objects.filter(tenant=self.current_user) class Meta: model = fa_invoice_lines
私はインラインではなく同じ戦略を使用しましたが、それは機能しますget_form