0

だから私はManageUserFormforms.pyにあります-それは正しくレンダリングされますが、私が編集しようとしているユーザーから正しいデータを引き出しません。

テンプレートには、正しく機能するforループがあります

{% for tenants in tenants %}
{{ tenants.user }} {{ tenants.type }}
{% endfor %}

このテンプレートは、UserProfile内のオブジェクトのリストをレンダリングします。そしてそれは正しく行います。私が直面している課題は、「tenants.type」属性を更新することです。繰り返しになりますが、タイプは正しく表示されますが、このテンプレートページから更新する方法がわかりません。

#views.py

def manage_users(request):
tenants = UserProfile.objects.all()

form = ManageUserForm(request.POST or None)

if form.is_valid():
    update = form.save(commit=False)
    update.save()

return render_to_response('manage_users.html', locals(), context_instance=RequestContext(request))

#forms.py

class ManageUserForm(forms.ModelForm):
     class Meta:
         model = UserProfile
         exclude = ('full_name', 'user',)

`インスタンスを呼び出す必要があると思いますが、リクエストされていないユーザーに対して呼び出す方法がわかりません。それでも、テンプレートのパターンに従います。テンプレートは基本的に、リクエストユーザー(スタッフユーザー)がリスト内のデータを変更できるユーザーのリストです。

ご協力ありがとうございました!

4

1 に答える 1

1

1 人のユーザーに対して 1 つのフォームがあります。そのフォームを使用して複数のテナントを編集する場合は、FormSet が必要です。オブジェクトの編集と表示はまったく別物です。それらを混同しないでください。

formset = modelformset_factory(form=ManageUserForm, queryset=tenants) 

更新: 1 つのタグに 1 つと残りの
1 つを含める必要があります。すべてのフォームは、フォームセットの最初のフォームです。{{ form.management_form }}{% for form in formset %}{{ form }}{% endfor %}<form>

テンプレート ループを書き直して、テナント オブジェクトではなくフォームセット フォームを反復処理する必要があります。テナント オブジェクトには次の方法でアクセスできます。{{ form.instance }}


更新 2:おそらく関数にパラメーターを
渡していないため、余分なフォームがあります。これらのフォームは通常、データの追加/編集に使用されます。したがって、作成用に N 個の空白フォームを追加することがサポートされています。extra=0modelformset_factory

于 2012-09-16T21:24:41.423 に答える