私はDjango Adminのリクエストからユーザを取得しようとしています。必要なのは、インラインフォームのclean()
メソッドでリクエストのユーザーにアクセスすることです。私は正常なModelForm
(つまり、インラインのものではない)で以下に説明する手順を踏んで、成功しました。しかし、インラインで私は多くの問題を抱えています。 私が持っている:Django Adminのインラインフォームへのリクエストを渡しますか?
class SaleFormset(BaseInlineFormSet):
def __init__(self, *args, **kwargs):
self.request = kwargs.pop('request')
super(SaleFormset, self).__init__(*args, **kwargs)
def _construct_form(self, i, **kwargs):
kwargs['request'] = self.request
super(SaleFormset, self)._construct_form(i, **kwargs)
class SaleProductItemInlineForm(ModelForm):
"""
Custom form for the Sale Product Item Inline used by the
Sale Admin form.
"""
def __init__(self, *args, **kwargs):
self.request = kwargs.pop('request')
super(SaleProductItemInlineForm, self).__init__(*args, **kwargs)
class Meta:
model = SaleProductItem
fields = "__all__"
そしてadmin.pyに、私が持っている:
class SaleProductItemInline(admin.TabularInline):
"""
Tabular inline for a SaleProductItem used in the Sale Admin.
"""
model = models.SaleProductItem
form = SaleProductItemInlineForm
formset = SaleFormset
def get_formset(self, request, obj=None, **kwargs):
formset_class = super(SaleProductItemInline, self).get_formset(request, obj, **kwargs)
class Subset(formset_class):
def __new__(cls, *args, **kwargs):
kwargs['request'] = request
return formset_class(*args, **kwargs)
return Subset
しかし、私はので、このセクションの'NoneType' object has no attribute 'media'
ことを言って、エラーを取得しています:
@property
def media(self):
# All the forms on a FormSet are the same, so you only need to
# interrogate the first form for media.
if self.forms:
return self.forms[0].media
()'あなたは確かにchange_view() '' – ckot
に渡す 'object_id'にアクセスすることができるだろう' add_view() 'べき'add_view()'を呼び出してください。それを私が直した。ありがとう –
これを達成するために、このような厄介で複雑な作業を想像することはできません... –