Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 如何在模板中显示两个窗体的对象_Django_Django Models_Django Forms_Django Templates_Django Views - Fatal编程技术网

Django 如何在模板中显示两个窗体的对象

Django 如何在模板中显示两个窗体的对象,django,django-models,django-forms,django-templates,django-views,Django,Django Models,Django Forms,Django Templates,Django Views,我想使用{{object.first_name}}显示用户名。我不能展示它。我还使用用户内置模块,其中UserProfile与OneToOneField链接。如果我使用的是{{p_form.user_image}},它就是显示图像输入字段 profile.html {% extends "base.html" %} {% load crispy_forms_tags %} {% block content %} <div class="col-md-6 grid-m

我想使用
{{object.first_name}}
显示用户名。我不能展示它。我还使用用户内置模块,其中UserProfile与
OneToOneField
链接。如果我使用的是
{{p_form.user_image}}
,它就是显示图像输入字段 profile.html

{% extends "base.html" %}
    {% load crispy_forms_tags %}
    {% block content %}
    <div class="col-md-6 grid-margin stretch-card">
        <div class="card">
          <div class="card-body">
                <h4 class="card-title">Profile Information - {{ object.first_name }}</h4>
            <form class="forms-sample" action="" method="POST" enctype="multipart/form-data">
                {% csrf_token %}
                {{ u_form|crispy }}
                {{ p_form|crispy }}

                <button class="btn btn-success mr-2" type="submit">Update</button>
            </form>
          </div>
        </div>
    </div>
    <ul>
    {% for key, val in object %}
      <li>{{ key }}: {{ val }}</li>
    {% endfor %}
    </ul>
    {% endblock content %}
用户配置文件模型

class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)

您需要将
对象
作为上下文传递。您可以这样尝试:

def userProfileUpdate(request, pk):
    if request.method == 'POST':
        u_form = UserUpdateForm(request.POST, instance=User.objects.get(id=pk))
        p_form = UserProfileForm(request.POST, 
                                 request.FILES,
                                 instance=UserProfile.objects.get(user_id=pk))
        if u_form.is_valid() and p_form.is_valid():
            u_form.save()
            p_form.save()
            messages.success(request, 'Profile Updated!!!')
            return redirect('users')
    else:
        instance = User.objects.get(id=pk)
        u_form = UserUpdateForm(instance=instance)
        p_form = UserProfileForm(instance=UserProfile.objects.get(user_id=pk))
    context ={
        'object': instance, <-- here
        'u_form': u_form,
        'p_form': p_form
    }

    return render(request, 'users/profile.html', context)
def userProfileUpdate(请求,主键):
如果request.method==“POST”:
u_form=UserUpdateForm(request.POST,instance=User.objects.get(id=pk))
p_form=UserProfileForm(request.POST,
请求文件,
instance=UserProfile.objects.get(user\u id=pk))
如果u_form.is_valid()和p_form.is_valid():
u_form.save()
p_form.save()
消息。成功(请求“配置文件已更新!!!”)
返回重定向('用户')
其他:
instance=User.objects.get(id=pk)
u_form=UserUpdateForm(instance=instance)
p_form=UserProfileForm(instance=UserProfile.objects.get(user_id=pk))
上下文={

“object”:例如,它在/users/15/profile update处给出了错误
TypeError/'User'对象不可编辑
。由于用户对象不是列表,它将抛出错误。我很好奇,您想通过
{%for key,val in object%}
  • {key}:{{val}}
  • {%endfor%}显示什么
    ?我共享的视图不会显示当前用户配置文件,而是显示注册用户配置文件如果您想显示配置文件的当前值(通过
    pk
    ),它应该显示在表单中。但是,如果您想显示它,请使用
    名字:{{{object.First_Name}}姓氏:{{object.last_name}}
    等等。对不起,我不明白。顺便说一句,您面临
    {%for key,val in object%}
    的问题。但您为什么需要它?@HuzaifSayyed
    def userProfileUpdate(request, pk):
        if request.method == 'POST':
            u_form = UserUpdateForm(request.POST, instance=User.objects.get(id=pk))
            p_form = UserProfileForm(request.POST, 
                                     request.FILES,
                                     instance=UserProfile.objects.get(user_id=pk))
            if u_form.is_valid() and p_form.is_valid():
                u_form.save()
                p_form.save()
                messages.success(request, 'Profile Updated!!!')
                return redirect('users')
        else:
            instance = User.objects.get(id=pk)
            u_form = UserUpdateForm(instance=instance)
            p_form = UserProfileForm(instance=UserProfile.objects.get(user_id=pk))
        context ={
            'object': instance, <-- here
            'u_form': u_form,
            'p_form': p_form
        }
    
        return render(request, 'users/profile.html', context)