Python django:重写get_表单内联线
我想覆盖表格管理员中的Python django:重写get_表单内联线,python,django,django-admin,inlines,Python,Django,Django Admin,Inlines,我想覆盖表格管理员中的get_表单,以便按当前用户进行筛选。 问题是我遇到了一个错误: object has no attribute 'current_user' 管理员 class InvoiceDetail(admin.TabularAdmin): form = InvoiceDetailForm model = fa_invoice_lines def get_form(self, request, obj=None, **kwargs):
get_表单
,以便按当前用户进行筛选。
问题是我遇到了一个错误:
object has no attribute 'current_user'
- 管理员
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
似乎没有调用
get\u form
admin。TabularAdmin
没有get\u form
方法。
从未调用您定义的get\u form
函数
您可能需要研究get\u formset
方法
受此启发,我实施了以下解决方案:
class Invoice(admin.ModelAdmin)
form = InvoiceForm
inlines = [InvoiceDetail,]
def get_formsets_with_inlines(self, request, obj=None):
for inline in self.get_inline_instances(request, obj):
inline.form.current_user = request.user
yield inline.get_formset(request, obj), inline
我看到有人给了我“一些帮助”,但我也明白,人们并不感激甚至不接受这种帮助。