Python 在django中更新用户及其用户配置文件

Python 在django中更新用户及其用户配置文件,python,django,Python,Django,如何将用户字段数据和用户配置文件数据绑定到视图中的模型表单,我只在使用instance=User时将用户数据渲染到表单中,但它不会在instance=profile上渲染用户配置文件的任何数据,我需要的是将所有用户及其配置文件渲染到表单中 models.py view.py form.py supervisor_update.html 设置与用户实例一起传入initial的额外字段应该可以 initial = {'su_mobile_number': profile.su_mobile

如何将用户字段数据和用户配置文件数据绑定到视图中的模型表单,我只在使用instance=User时将用户数据渲染到表单中,但它不会在instance=profile上渲染用户配置文件的任何数据,我需要的是将所有用户及其配置文件渲染到表单中

models.py

view.py

form.py

supervisor_update.html


设置与用户实例一起传入initial的额外字段应该可以


    initial = {'su_mobile_number': profile.su_mobile_number}
    form = SupervisorSignUpForm(instance=user, initial=initial)

或者,如果您不想手动创建dict,您可以使用model_to_dict


    from django.forms.models import model_to_dict
    initial = model_to_dict(profile, exclude=['user'])
    form = SupervisorSignUpForm(instance=user, initial=initial)

此外,在视图的顶部,您假设用户和主管具有相同的id,但事实并非如此,您可以这样做


    user = user = get_object_or_404(User, pk=user_id)
    profile = user.supervisor
    if not profile:
        raise Http404


对于回复,我遇到的问题是supervisor\u update.html su\u mobile\u number的数据值未显示在字段中,但其他与用户模型工作相关联的数据值i get error form=supervisors ignupforminstance=User,初始语法错误:位置参数在初始值中紧跟关键字参数I更改了参数的位置form=SupervisorSignUpForminitial,instance=user但它不起作用我的错应该是SupervisorSignUpForminitial=initial,instance=user。刚刚更新了答案
{% load crispy_forms_tags %}
<form method="post" action="{% url 'supervisor_update' form.instance.pk %}" class="js-supervisor-update-form">
{% csrf_token %}
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
  <span aria-hidden="true">&times;</span>
  </button>
  <h4 class="modal-title">Update Supervisor</h4>
  </div>
  <div class="modal-body">
  {% include 'partials/form_messages.html' %}



    {{ form.username|as_crispy_field }}

    {{ form.email|as_crispy_field }}


    {{ form.first_name|as_crispy_field }}

    {{ form.last_name|as_crispy_field }}

    {{ form.su_mobile_number|as_crispy_field }}


    </div>
    <div class="modal-footer">
    <button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
    <button type="submit" class="btn btn-primary">Update Supervisor</button>
    </div>
    </form>

    initial = {'su_mobile_number': profile.su_mobile_number}
    form = SupervisorSignUpForm(instance=user, initial=initial)


    from django.forms.models import model_to_dict
    initial = model_to_dict(profile, exclude=['user'])
    form = SupervisorSignUpForm(instance=user, initial=initial)


    user = user = get_object_or_404(User, pk=user_id)
    profile = user.supervisor
    if not profile:
        raise Http404