私はDjangoのModel Formsetを使用して、さまざまなデータのフォームセットを生成しています。素晴らしいことですが、ユーザーがフォームセットを表示して10個のアイテムのうち2個を更新すると、2個のアイテムだけを追跡して「2個のアイテムを更新しました" ものの種類。Django Model Formset:セットに更新/保存されたアイテムの変更のみを追跡しますか?
Django Model Formsetsには、このためのAPIが組み込まれていますか?私はDjango Docsでそれを見つけることができません。
私は様々なアプローチを試みたが、以下のピーターによって提供されるコードを使用する場合、これを取得しておくました:)私は(formset.has_changedにform.has_changed切り替えると
'Attendance' object has no attribute 'has_changed.'
を、私は
'list' object has no attribute 'has_changed'
を取得
私の見るとPostメソッド
class AttendanceView(TemplateView):
template_name = 'example.html'
def changed_forms(self, formset):
return sum(1 for form in formset if form.has_changed())
def post(self, request, *args, **kwargs):
formset = AttendanceFormSet(request.POST)
if formset.is_valid():
formset = formset.save()
forms_changed = self.changed_forms(formset)
context = self.get_context_data(**kwargs)
context['total_changed_forms'] = forms_changed
return self.render_to_response(context)
else:
return HttpResponse("POST failed")
は、だから、僕は変化し、それを考え出した:
formset = formset.save()
へ
formset.save()
ありがとう@peter DeGlopper ...どうすればそのデータをテンプレートのコンテキストに追加できますか?テンプレートにそのデータを出力したいのですか? –
一般にコンテキストにデータを追加することに慣れていますか?これはそれほど違いはありません。明らかに、フォームセットを 'POST'データにバインドした後にのみ可能です。 –
ちょっとピーター、私は間違いを続けています。上記のコード例を更新しました。私のフォームがhas_changed()メソッドをピックアップしているようには見えません... –