我对Django比较陌生,我想实现此功能 因此,基本上,我想为所有用户创建一个列表视图,从中我想从中选择任何特定用户,该用户会将我带到该用户的Updateview,而我只想将该权限授予超级用户。
注意:我有一个AbstractUser
我尝试过的代码如下:
class editinfo(UpdateView,LoginRequiredMixin):
model=User
form_class=forms.UserProfileForm
success_url=reverse_lazy('home')
template_name='accounts/edit.html'
def get_queryset(self):
queryset=super().get_queryset()
return queryset.filter(username__iexact=self.kwargs.get('username'))
class userlist(ListView):
model=User
template_name='accounts/user_list.html'
def get_queryset(self):
try:
self.user_all = User.objects.all()
except User.DoesNotExist:
raise Http404
else:
return self.user_all
def get_context_data(self,**kwargs):
context=super().get_context_data(**kwargs)
context['user_all']=self.user_all
return context
path('edit/<int:pk>/',views.editinfo.as_view(),name='edituser'),
path('user/all/',views.userlist.as_view(),name='userlist'),
class UserProfileForm(forms.ModelForm):
class Meta:
model = User
fields = ('username','email','first_name','last_name','mobilenumber','address','designation', 'password', 'is_active','is_staff')
def save(self, user=None):
user_profile = super(UserProfileForm, self).save(commit=False)
user_profile.save()
return user_profile
{% extends "base.html" %}
{% load crispy_forms_tags %}
{% load staticfiles %}
{% block content %}
<div class="container">
<h1>Update Info</h1>
<form method="post">
{% csrf_token %}
{{ form|crispy }}
<input type="submit" class='btn btn-default' value="Update">
</form>
</div>
{% endblock %}
{% extends "base.html" %}
{% block content %}
<div class=" container">
<h3>User List</h3>
{% if user.is_authenticated and user.is_superuser %}
<ul>
{% for user in user_all %}
<li><a href="{% url 'accounts:edituser' pk=user.pk %}">@{{ user.username }}</a> </li>
{% endfor %}
</ul>
{% endif %}
</div>
{% endblock %}