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