在Django中,可以通过授权用户访问Model Form的特定字段/对象来限制用户对/admin的访问。以下是一种实现方法:
from django.contrib import admin
from django.contrib.auth.models import User
class MyModelAdmin(admin.ModelAdmin):
def get_form(self, request, obj=None, **kwargs):
form = super().get_form(request, obj, **kwargs)
user = request.user
# 根据用户权限设置可见字段
if not user.is_superuser:
# 如果用户不是超级用户,则只显示特定字段
form.base_fields['specific_field'].widget.attrs['readonly'] = True
form.base_fields['specific_field'].widget.attrs['disabled'] = True
return form
def get_queryset(self, request):
qs = super().get_queryset(request)
user = request.user
# 根据用户权限设置可见对象
if not user.is_superuser:
# 如果用户不是超级用户,则只显示特定对象
qs = qs.filter(user=user)
return qs
admin.site.register(MyModel, MyModelAdmin)
在上述代码中,我们创建了一个自定义的ModelAdmin类MyModelAdmin
,并重写了get_form
和get_queryset
方法。在get_form
方法中,我们根据用户权限设置可见字段,只有超级用户可以看到所有字段,其他用户只能看到特定字段,并将其设置为只读和禁用。在get_queryset
方法中,我们根据用户权限设置可见对象,只有超级用户可以看到所有对象,其他用户只能看到特定对象。
{% extends "admin/base.html" %}
{% block content %}
<h1>{{ model_name }}</h1>
<form method="post" action="{% url 'admin:app_model_change' model_id %}">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Save">
</form>
{% endblock %}
在上述代码中,我们使用了Django的模板语言来渲染表单字段。{{ form.as_p }}
会将表单字段以段落的形式显示出来,你可以根据需要自定义表单的显示方式。
以上是授权用户访问Django中/admin的Model Form的特定字段/对象的一种实现方法。对于显示html页面中的特定字段,可以通过使用Django的模板语言来渲染表单字段。请注意,这只是一种示例方法,具体实现方式可能因项目需求而异。
没有搜到相关的沙龙