I want to override the get_form in a tabular admin in order to filter by current user.
The thing is that I'm getting a error:
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,]
Form.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
I have used the same strategy in not inlines and it works
It seems is not calling the get_form
admin.TabularAdmin does not have a get_form method.
The get_form function you defined is never being called.
You might want to look into get_formset method.
https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.InlineModelAdmin.get_formset
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With