首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何授权用户访问django中/admin的Model Form的特定字段/对象?显示html页面中的特定字段

在Django中,可以通过授权用户访问Model Form的特定字段/对象来限制用户对/admin的访问。以下是一种实现方法:

  1. 创建一个自定义的ModelAdmin类,用于管理/admin中的特定模型。
代码语言:txt
复制
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_formget_queryset方法。在get_form方法中,我们根据用户权限设置可见字段,只有超级用户可以看到所有字段,其他用户只能看到特定字段,并将其设置为只读和禁用。在get_queryset方法中,我们根据用户权限设置可见对象,只有超级用户可以看到所有对象,其他用户只能看到特定对象。

  1. 在html页面中显示特定字段,可以通过在模板中使用Django的模板语言来实现。
代码语言:txt
复制
{% 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的模板语言来渲染表单字段。请注意,这只是一种示例方法,具体实现方式可能因项目需求而异。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券