0
でinlineformsetsを移入するためにどのように私は私のinlineformset
生成inlineformset_factory
、ジャンゴ
CoinInfoFormSet = forms.inlineformset_factory(Portfolio,CoinInfo
,form = CoinForm,can_delete=False,extra=1)
を持っています。しかし、私のupdateviewでそれを設定しようとすると、データはアンバインドされ、エラーが生成されます。 "(隠しフィールドポートフォリオ)インラインの外部キーが親インスタンスの主キーと一致しませんでした。
class UpdatePortFolio(LoginRequiredMixin,UpdateView):
model = Portfolio
fields = ('title','is_public')
template_name = 'hello/edit_create_portfolio.html'
def post(self, request, *args, **kwargs):
portfolioForm = PortfolioForm(data=request.POST)
self.object = portfolioForm.save(commit=False)
data = self.get_context_data()
if 'add_coin' in request.POST:
cp = request.POST.copy()
cp['coininfo_set-TOTAL_FORMS'] = int(cp.get('coininfo_set-TOTAL_FORMS')) + 1
data['CoinInfoFormSet'] = CoinInfoFormSet(cp, prefix='coininfo_set')
for form in data['CoinInfoFormSet']:
print(form,'\n\n')
return render(request, 'hello/edit_create_portfolio.html', data)
def get_context_data(self, **kwargs):
data = super(UpdatePortFolio, self).get_context_data(**kwargs)
print(self.get_object())
portfolio = self.get_object()
if self.request.POST:
data['CoinInfoFormSet'] = CoinInfoFormSet(instance=portfolio, prefix='coininfo_set')
else:
data['CoinInfoFormSet'] = CoinInfoFormSet(instance=portfolio, prefix='coininfo_set')
return data
インラインフォームセットをどのように設定すればよいですか?
self.get_object()がPortfolioのインスタンスであるため、このインスタンスは問題ではありません。また、私はインラインフォームをレンダリングするときに動作します。しかし、私はそれらが縛られていないので、投稿することはできません。 –