Django 将PK传递到模型表单(未登录用户)

Django 将PK传递到模型表单(未登录用户),django,django-forms,Django,Django Forms,我希望在django.auth用户上使用模型表单,但我希望能够将PK传递给模型以管理其他用户,而不是登录用户 有没有办法做到这一点,或者我需要创建一个常规表单 Django管理站点不适合我的用例 类似(当然不起作用…)的东西: 看法 用户编辑表单 class UserEditForm(forms.ModelForm): class Meta: model = User fields = ('first_name', 'last_name', 'email'

我希望在django.auth用户上使用模型表单,但我希望能够将PK传递给模型以管理其他用户,而不是登录用户

有没有办法做到这一点,或者我需要创建一个常规表单

Django管理站点不适合我的用例

类似(当然不起作用…)的东西:

看法

用户编辑表单

class UserEditForm(forms.ModelForm):
    class Meta:
        model = User
        fields = ('first_name', 'last_name', 'email')
模板:

% block content %}
<h1>Edit User:</h1>
<p>&nbsp;</p>
<form action="." method="post" enctype="multipart/form-data">
    {{ user_form.as_p }}
    {% csrf_token %}
    <p><input type="submit" value="Save changes" class="btn btn-primary"> &nbsp; &nbsp; &nbsp; <a href="{% url 'manage_users' %}" class="btn btn-secondary">Manage</a></p>
</form>
{% endblock %}
对django来说还是很新的

谢谢你的帮助


BCBB

您只需获取所需的用户,然后将其作为实例参数传递到表单中,就像您对登录用户所做的那样

def edit_user(request, pk):
    user = User.objects.get(pk=pk)
    if request.method == 'POST':
        user_form = UserEditForm(instance=user,
                                 data=request.POST)
         ...
    else:
        user_form = UserEditForm(instance=user)
    ...

我不明白你想做什么。“管理”用户是什么意思?表单的queryset参数应该做什么?为什么要将实例作为参数而不是查询集传递?有些用户是应用程序支持人员,可以更新用户的电子邮件地址等信息。这似乎没有回答我的任何问题。也许您应该发布UserEditForm的代码。当你尝试这个的时候,你会发现错误。。。我知道这很简单。。。谢谢你的帮助!
def user_profile(request):
if request.method == 'POST':
    user_form = UserEditForm(instance=request.user,
                             data=request.POST)
    profile_form = UserProfileEditForm(instance=request.user.profile,
                                   data=request.POST,
                                   files=request.FILES)
    if user_form.is_valid() and profile_form.is_valid():
        user_form.save()
        profile_form.save()
        messages.success(request, 'Profile updated successfully')
    else:
        messages.error(request, 'Error updating your profile')
else:
    user_form = UserEditForm(instance=request.user)
    profile_form = UserProfileEditForm(instance=request.user.profile)
return render(request, 'profile_edit.html', {'user_form': user_form,
                                             'profile_form': profile_form})
def edit_user(request, pk):
    user = User.objects.get(pk=pk)
    if request.method == 'POST':
        user_form = UserEditForm(instance=user,
                                 data=request.POST)
         ...
    else:
        user_form = UserEditForm(instance=user)
    ...